
Aus Neugierde habe ich mich also entschlossen, einen Blick auf meine RAM-Nutzung zu werfen, während meine Windows 7-VM (3 GB RAM zugewiesen) läuft. Ich war ... überrascht, die Ergebnisse zu sehen, und ich frage mich, warum diese Ergebnisse so sind, wie sie sind:
Der Task-Manager meines Hostcomputers (Windows 8.1) zeigt Folgendes an:
Das zeigt wirklich nur, wie viel Chrome ein Schwein ist.... Wie auch immer, beachten Sie, dass der VirtualBox-Manager nur 75 MB RAM verwendet. Nun, das ist vernünftig, dies ist schließlich nur dieManagerund nicht die VM selbst. Aber warten Sie, diese Zahlen (selbst wenn Sie das addieren, was Sie dort nicht sehen) entsprechen nicht der aktuellen RAM-Nutzung (9 GB, wie auf der Registerkarte „Leistung“ angegeben). Angesichts der Tatsache, dass meine Gastmaschine derzeit 1,5 GB verwendet, würde man erwarten, dass sie etwas weiter oben in der Liste steht …
Ok, versuchen wir ein anderes Tool:RAMMap
Zunächst noch zwei Screenshots von RAMMap:
Nun, der Teil für „privater Prozess“ scheint etwa 3 GB groß zu sein (es sei denn, ich liege bei meinem flüchtigen Blick um eine Größenordnung daneben), aber trotzdem – außer Chrome beansprucht nichts mehr als 100 MB RAM.
Oh, hey, sieh dir das an:
Sieht so aus, als hätte ich endlich gefunden, wo es ist ... aber was ist das? Behandelt VBox den RAM des Gasts wie eine Datei, die es einfach im RAM geladen lässt? Ist das ... etwas völlig anderes? Warum informiert mich Windows im normalen Task-Manager-Tool nicht darüber?
TL;DR: Windows, du zeigst mir nicht die gesamte RAM-Nutzung
Antwort1
Es wird in RAMMap unterTreiber gesperrt. Sehen Sie sich die 3 GB an, die Sie der VM zugewiesen haben.
VMs verwenden diesen Speicher, sodass keine anderen Tools ihn verwenden können.
Antwort2
TL;DR: Der Prozess hat den Speicher verwendet, die Verwendung des Speichers eingestellt und Windows war einfach zu faul, sich bisher darum zu kümmern.
Windows zeigt die RAM-Nutzung im Task-Manager unter „Prozess“ nicht an, es sei denn, der Prozess hat den RAM angefordert und hat eine gewisse Kontrolle über seine Nutzung. Wenn das Betriebssystem dem Prozess den RAM zur Verfügung gestellt hat, um Zuordnungen zu sichern, und diese Zuordnungen verworfen werden können, wäre es verwirrend, sie dem Prozess zuzurechnen. Dies würde zu stark variierenden Nutzungszahlen für einen Prozess führen, da andere Prozesse dazu geführt hätten, dass diese Zuordnungen nicht mehr gesichert sind.
Es gibt keinen besonderen Grund, warum es Sie interessieren sollte, dass Windows diesem Prozess zufällig 2 GB RAM gegeben hat, nicht weil es darum gebeten hat, sondern nur, weil ihm nichts Besseres eingefallen ist, was man mit diesem Speicher machen könnte. Und natürlich kann Windows diesen RAM jederzeit zurückfordern, wenn es etwas anderes mit dem Speicher zu tun hat.
Wenn der Prozess den Speicher tatsächlich verwendet, wird er als Teil seines Arbeitssatzes betrachtet und dem Prozess in Rechnung gestellt. Wenn Windows jetzt aufräumen würde und der Prozess den Speicher später verwenden würde, müsste Windows ihn einfach erneut zuweisen. Es macht also keinen Sinn, jetzt zusätzliche Arbeit zu leisten, nur um höchstwahrscheinlich später mehr Arbeit zu verursachen.