/ / Windows - Commit Size vs Virtual Size - Fenster, Speicher, virtueller Speicher

Windows - Commit-Größe vs. virtuelle Größe - Fenster, Arbeitsspeicher, virtueller Arbeitsspeicher

Ich möchte den genauen Unterschied zwischen wissen Commit Size (sichtbar in der Taskmanager) und Virtuelle Größe (sichtbar in SysInternals " Process Explorer).

Das Virtuelle Größe Parameter in Process Explorer Sieht aus wie ein genauerer Indikator für die Gesamtauslastung des virtuellen Speichers durch einen Prozess. Die Commit Size ist immer kleiner als die Virtuelle Größe und ich denke, es enthält nicht den gesamten virtuellen Speicher, der vom Prozess verwendet wird. Ich möchte, dass jemand erklärt, was genau in diesen Parametern enthalten ist.

Antworten:

43 für die Antwort № 1

Speicher kann reserviert, festgeschrieben, zuerst aufgerufen und Teil des Arbeitssatzes sein. Wenn Erinnerung ist reserviertWenn ein Teil des Adressraums beiseite gelegt wird, passiert nichts anderes.

Wenn Erinnerung ist engagiert seingarantiert das Betriebssystem, dass die entsprechenden Seiten könnte im Prinzip existieren sie entweder im physischen RAM oder in der Auslagerungsdatei. Mit anderen Worten, es wird auf die harte Grenze der insgesamt verfügbaren Seiten auf dem System angerechnet formal Erstellt Seiten. Das heißt, es werden Seiten erstellt und so getan, als ob sie existieren (wenn sie in Wirklichkeit noch nicht existieren).

Wenn Erinnerung ist zugegriffen zum ersten mal die seiten die formal existieren, werden so geschaffen, dass sie wirklich existieren. Dem Prozess wird entweder eine Nullseite zugeführt, oder es werden Daten aus einem Mapping in eine Seite eingelesen. Die Seite wird in das verschoben Workingset des Prozesses (wird aber nicht notwendigerweise für immer in ihm bleiben).

Jeder laufende Prozess hat eine Anzahl von Seiten sachlich und logisch im RAM existieren diese Seiten, und sie existieren auch "offiziell". Dies ist der Prozess "Arbeitssatz".
Außerdem hat jeder laufende Prozess Seiten, die es sind sachlich im RAM, aber offiziell nicht im RAM vorhandenMehr. Sie befinden sich möglicherweise in der sogenannten "Standby-Liste" oder in einem Teil des Puffercaches oder in einem anderen Bereich. Wenn auf diese zugegriffen wird, werden sie vom Betriebssystem möglicherweise einfach wieder in den Arbeitsbereich verschoben.
Schließlich hat jeder Prozess Seiten, die sich überhaupt nicht im RAM befinden (entweder beim Auslagern oder sie existieren noch nicht).

Virtuelle Größe umfasst die Größe aller Seiten, die der Prozess hat reserviert.

Größe festlegen umfasst nur Seiten, die gewesen sind engagiert sein.

Das heißt, in Laienbegriffen ist "virtuelle Größe"So ziemlich Ihr eigenes Problem und nur durch die Größe Ihres Adressraums begrenzt, wohingegen "Festschreibungsgröße" das Problem aller ist, da es eine global begrenzte Ressource (RAM plus Swap) verbraucht beeinflusst andere Prozesse.


9 für die Antwort № 2

Die Festschreibungsgröße ist die Menge an Speicherplatz, die in der Auslagerungsdatei für den Prozess reserviert ist. Wird verwendet, wenn die Seiten ausgetauscht werden müssen, um Platz im RAM für andere Prozesse zu schaffen.

Und ja, der virtuelle Speicher wird größer seinda es die Seiten enthält, die nicht von der Auslagerungsdatei gesichert werden. Zumindest die Code- und Ressourcenabschnitte in den EXE- und nicht verschobenen DLLs. Bei Bedarf können diese Seiten einfach aus der Datei entfernt und neu geladen werden. Alle Betriebssystem-DLLs passen zu dieser Kategorie. Darüber hinaus alle vom Prozess verwendeten Speicherzuordnungsdateien. SysInternals "VMMap-Dienstprogramm kann Einblick geben.


2 für die Antwort № 3

Virtuelle Größe ist die Größe des virtuellen Adressraums des Prozesses.

Bei der Speicherzuweisung können Sie einen anfordernAdressbereich, ohne tatsächlich Speicher dahinter zu verpflichten. Diese Adressen zeigen nicht auf den physischen Speicher, bis ein zweiter Zuweisungsaufruf verwendet wird, um sie festzuschreiben.

Lesen Sie mehr auf VirtualAlloc. Linux hat die MMAP-Funktion, die dasselbe tut.