Windows Commit Charge niedriger als physischer RAM-Verbrauch?

3477
Unsigned

Ich habe diese Frage gesehen und ist trotz des Titels kein Duplikat, da die gegebene Antwort meine Frage nicht beantwortet.

Ich habe derzeit ein Windows XP-System, das die Commit-Nutzung des Systems als weniger als die physische Speicherauslastung meldet. Nach meinem Verständnis war System Commit die Gesamtmenge der Auslagerungsdatei plus RAM-Nutzung. Wie von Wikipedia formuliert:

Die Menge der Auslagerungsdatei, die verwendet werden würde, wenn der gesamte aktuelle RAM-Inhalt entfernt werden müsste.

Wie ist es also möglich, die RAM-Auslastung höher als die Summe aus RAM und Auslagerungsdatei zu verwenden?

Prozess-Explorer-Screenshot

4

1 Antwort auf die Frage

7
shf301

Der Betrag der Überweisungsgebühr enthält nicht den gesamten physischen Speicher. es zählt nur den gesamten physischen Speicher, der auf die Festplatte ausgelagert werden kann.

Von Pushing the Limits of Windows - Virtueller Speicher (ich würde empfehlen, den gesamten Artikel zu lesen)

Wie Sie es von der Beschreibung der Commit-Garantie erwarten würden, ist das Commit-Limit die Summe des physischen Speichers und die Größe der Auslagerungsdateien. In der Realität zählt nicht ganz der gesamte physische Speicher zur Festschreibungsgrenze, da das Betriebssystem einen Teil des physischen Speichers für seine eigene Verwendung reserviert.

und

Nicht der gesamte virtuelle Speicher, den ein Prozess zuweist, zählt zur Festschreibungsgrenze. Wie Sie gesehen haben, ist der reservierte virtuelle Speicher nicht der Fall. Virtueller Arbeitsspeicher, der eine Datei auf der Festplatte darstellt, die als Dateizuordnungsansicht bezeichnet wird, zählt ebenfalls nicht zur Begrenzung, es sei denn, die Anwendung fragt nach Copy-on-Write-Semantik, da Windows alle mit der Ansicht verknüpften Daten aus dem physischen Arbeitsspeicher löschen kann Rufen Sie es aus der Datei ab. Der virtuelle Speicher im Adressraum von Testlimit, auf den seine ausführbaren Dateien und System-DLL-Images abgebildet werden, zählt daher nicht zur Festschreibungsgrenze. Es gibt zwei Arten von virtuellem Prozessspeicher, die für das Festschreibungslimit relevant sind: private und pagefile-basierte.

Daher wird die Speicherbelegung des Betriebssystems nicht so groß wie die Speicherzuordnung von Dateien. In Windows werden alle EXE- und DLL-Dateien als vom Speicher zugeordnete Dateien geladen. Sie werden in den physischen Speicher geladen. Da sie jedoch nach dem Laden nicht geändert werden (normalerweise), werden sie von Windows nicht durch die Auslagerungsdatei gesichert, da sie wissen, dass sie sie einfach aus ihrer Festplattendatei lesen können Zählt nicht zum Commit-Limit.

Eine kleine Korrektur, shf301: Sie haben geschrieben: "Festschreiben" [...] zählt nur den gesamten physischen Speicher, der auf die Festplatte ausgelagert werden könnte. " Dies sollte geschrieben werden "zählt nur den gesamten virtuellen Adressraum, der in die Auslagerungsdatei ausgelagert werden konnte". Zum einen ist das Festschreiben eine Anzahl von virtuellem, nicht physischem Speicher. Zweitens ist es möglich und sogar üblich, dass im Speicher abgebildeten Dateien Lese- / Schreibvorgänge zugeordnet werden. Wenn eine Seite, die aus einer solchen Datei stammt, geändert wird, wird sie auf die Festplatte geschrieben und in die Datei zurückgeschrieben, aus der sie stammt, und nicht in die Auslagerungsdatei. Jamie Hanrahan vor 9 Jahren 0