Wie kann ich sehen, wie viel Speicher ein Prozess verwendet und nicht nur zugewiesen hat?

809
marsh-wiggle

Ich suche nach einer Möglichkeit, den Speicher zu bestimmen, den ein Prozess tatsächlich verwendet (und nicht nur zugewiesen hat).

Betrachtet man procmon.exe oder vmmap.exe, so sind die relevanten Werte:

Private Bytes Der
gesamte Speicher wird zugewiesen.

Arbeitssatz
Verwendeter Speicher im physischen RAM.

Angenommen private bytes = 3 GBund die working set = 200 MB. Im besten Fall verwendet der Prozess nur die 200 MB und der Rest wird nur zugewiesen und nicht verwendet. Im schlimmsten Fall werden alle 3 GB verwendet und 2,8 GB werden in die Auslagerungsdatei ausgelagert.

(Ich lese die Fragen Wie viel Speicher verwendet meine Windows-App wirklich? Und Was sind private Bytes, virtuelle Bytes, Arbeitssatz, aber sie beantworten meine Frage nicht.)

Gibt es eine Möglichkeit, den Speicher für die reale Verwendung des Prozesses zu finden?

Bearbeiten:
Für mich wird Speicher verwendet, um wie viel Speicher belegt ist.

Bei der Zuweisung von 3 GB passiert nichts. Der Speicher ist nur für den Prozess reserviert. Die privaten Bytes nehmen zu, der Arbeitssatz bleibt jedoch unverändert. Nach dem Füllen von 200 MB des zugewiesenen Speichers wird dieser im Arbeitssatz angezeigt.

Diese 200 MB benutzten / gefüllten Speicher sind das, wonach ich suche, unabhängig davon, ob ich mich vollständig auf dem Working-Set befinde oder ausgelagert wurde.

1
Was ist Ihre Definition von * Speicher, den ein Prozess verwendet *? gronostaj vor 9 Jahren 3
@gronostaj hat den Beitrag bearbeitet, thx. marsh-wiggle vor 9 Jahren 0
Das Betriebssystem verfolgt nicht, ob in den zugewiesenen Speicher geschrieben wurde oder nicht. Es verfolgt, welche Seiten sich aktuell im physischen RAM (Working Set) befinden und wie viel zugewiesen wurde (Private Byte). Ich glaube nicht, dass Sie auf Betriebssystemebene finden können, wonach Sie suchen, es wäre eine anwendungsspezifische Funktion. heavyd vor 9 Jahren 0
@heavyd Das System weiß, welche Seiten, die sich nicht im Working Set befinden, bereits geschrieben wurden. Dies kann leicht überwacht werden. marsh-wiggle vor 9 Jahren 0
Das ist eine gute Frage. Ich bin auch verwirrt darüber, was diese Spalten darstellen sollen und ob es möglich ist, mehr Einblick in den Swap-Bereich zu haben, den ein Prozess verwendet. Es sieht so aus, als wäre es im Grunde nicht so. http://superuser.com/questions/917492/whats-the-total-amount-of-memory-and-swap-a-process-isusing cnst vor 9 Jahren 0
Private Bytes sind nicht "der gesamte zugewiesene Speicher". Es ist kein reservierter Speicher als Prozess-privater Speicher vorhanden. Das meiste davon heißt "mapped". Jamie Hanrahan vor 9 Jahren 0

0 Antworten auf die Frage