Frage Speicherverbrauch der virtuellen Maschine wird nicht im TaskManager angezeigt


Es gibt etwas über Windows-Speicherverwaltung und seine Beziehung zu TaskManager, die ich nicht verstehe, und ich hoffe, dass jemand mich aufklären kann.

Wenn ich eine virtuelle Maschine betreibe (egal ob Virtual PC 2007, Virtual Server 2005 oder VirtualBox, da sie auf die gleiche Weise funktionieren) und den TaskManager aufrufen, sehe ich auf der Registerkarte Prozesse einige Einträge für die VM, aber die Speicherwerte sind ziemlich klein (ca. 30 MB). Offensichtlich enthält es nicht den Speicher, der tatsächlich von der VM selbst verbraucht wird. Keine der verschiedenen speicherbezogenen Spalten, die Sie sichtbar machen können, scheint anders zu funktionieren. Die Speicherbelegung auf der Registerkarte Leistung scheint für die gesamte Speichernutzung einschließlich der VM korrekt zu sein.

Also meine Frage ist, warum nicht die Speicherbelegung der VM (die 100 von MB ist) auf der Registerkarte Prozesse angezeigt wird?


20
2018-06-04 18:25


Ursprung




Antworten:


VirtualPC, HyperV und wahrscheinlich ähnliche Produkte verwenden etwas, das als "Driver Locked Memory" bezeichnet wird und im Process Explorer, Task Manager usw. nicht sichtbar ist. RAMMap zeigt den vom Treiber gesperrten Speicher an, der von einem Prozess verwendet wird.


24
2017-07-30 18:56



Für den Rekord RAMMap ist Vista oder höher nur. - Tim Abell
RAMMap zeigte keinen gesperrten Speicher für einen Prozess, es zeigte den gesamten gesperrten Speicher - NeDark
Um nur auf andere hinzuweisen, sagte er nicht prozesssicher. Er sagte Treiber gesperrter Speicher So funktioniert das dynamische Gedächtnis. Wenn Sie es nicht mögen oder denken, dass es mit Ihrer App zu tun hat, können Sie die VM einfach für statischen Speicher anstelle von dynamisch konfigurieren. Ich habe gesehen, dass einige Java-Apps Probleme haben, wenn sie dynamischen Speicher in einer VM verwenden, indem sie sie auf statisch setzen den Fehler behoben. - John C


Jedes gehostete Virtualisierungssystem wie das von Ihnen gelistete System enthält einen Gerätetreiber, der im Kernel des Host-Betriebssystems ausgeführt wird. Dies ist erforderlich, da Benutzerprogramme die zum Erstellen einer virtuellen Maschine erforderlichen Anweisungen nicht erteilen können.

Der Grund dafür, dass Sie den Speicher im Task-Manager nicht sehen, ist, dass Sie Speicher für die Benutzermodus-Programme suchen, die den virtuellen Maschinen zugeordnet sind, und nicht den Kernel-Modus-Gerätetreiber, der den Speicher tatsächlich den VMs zugewiesen hat.


5
2017-07-30 22:15





Um die von einer VM verwendete Speichermenge anzuzeigen, müssen Sie sicherstellen, dass die Spalte Working Set in Ihrem Task-Manager sichtbar ist. Oft ist nur das Private Set sichtbar.

So aktivieren Sie diese Spalte:

1) Starten Sie den Task-Manager

2) Wechseln Sie zur Registerkarte Prozesse

3) Ansicht> Spalten auswählen

4) Stellen Sie sicher, dass "Memory - Working Set" aktiviert ist

Zum Beispiel ist der Private Set der VM, die ich gerade betreibe, 43 MB groß, während das Working Set 2,3 GB groß ist


4
2018-06-09 09:21



Was nutzt die volle Speicheranwendung? Arbeitssatz + Privates oder nur Arbeitssatz? - zendar
Vielleicht ist es in verschiedenen Versionen von Windows anders, aber unter Windows 7 ist das nicht, was ich sehe. Die "Working Set" -Nummern sind größer als die "Private Working Set" -Nummern, aber nicht weit genug, um den Speicher der VM zu berücksichtigen. Ich habe alle Speicher bezogene Spalten versucht und keiner von ihnen. Dies gilt sowohl für Windows Virtual PC als auch für VirtualBox. Welche Version von Windows und welchen VM-Host verwenden Sie? - Scott Bussinger
Leider gibt es keine einzige Zahl, die „wie viel Speicher“ ein Prozess anzeigt, verwendet werden, da Sie in Komplikationen wie Shared Memory erhalten, Datei-Map-Speicher, ausgelagerten-out-Speicher und ein paar andere. Hier ist eine gute Erklärung einiger Konzepte: stackoverflow.com/questions/1984186/... - tylerl