Warum Windows Prozesse beendet oder ihnen nicht erlaubt, mehr Speicher zuzuweisen, selbst wenn etwas freier RAM vorhanden ist

Warum Windows Prozesse beendet oder ihnen nicht erlaubt, mehr Speicher zuzuweisen, selbst wenn etwas freier RAM vorhanden ist

Diese Frage folgt der vorherigenWie analysiere ich die Speichernutzung in Windows 7 genau?

Warum erlaubt der Kernel den Prozessen nicht, mehr Speicher zuzuweisen, selbst wenn noch etwa 800 MB leerer Speicher vorhanden sind, auf einem System, auf dem reale Prozesse nur etwa 40 % des physischen Speichers (privater Arbeitssatz) verbrauchen und der Rest auf mysteriöse Weise vom Betriebssystem verbraucht wird?

Erinnerung

Ist es möglich, die Kerneleinstellungen so zu ändern, dass ich 100 % des Arbeitsspeichers nutzen kann? Wenn ich im Taskmanager gerade 80 % des Arbeitsspeichers erreiche, verhält sich der Kernel so, als wären es 100 %, denn das ist die Grenze, ab der Anwendungen abstürzen und keinen Arbeitsspeicher mehr zuweisen können. Wie gebe ich diese 20 % frei, damit ich meinen gesamten Arbeitsspeicher bis zu 100 % nutzen kann? Warum sind diese 20 % „reserviert“ und wofür? Das System ist Windows 7 64 Bit mit insgesamt 4 GB RAM. Swap ist aus Leistungsgründen deaktiviert. (Die Festplatte ist furchtbar langsam und das Aktivieren von Swap macht den Computer nahezu unbrauchbar.)

Antwort1

Der private Arbeitssatz ist nicht der gesamte Speicher eines Prozesses:

Private Bytes, Arbeitssatz, virtuelle Größe

Die virtuelle Größe ist die Gesamtmenge an Speicher, die ein Programm möglicherweise zum Ausführen benötigt. Viele Programme verwenden nicht den gesamten ihnen zugewiesenen virtuellen Speicher, fordern ihn jedoch an, um sicherzustellen, dass sie für alle von Ihnen angeforderten Vorgänge über genügend Speicher verfügen. Er wird auch für speicherabgebildete Dateien und andere Dinge verwendet, die einfacher als Speicher zu erledigen sind (gemeinsam genutzte Speicherbereiche, IPC), aber nicht unbedingt mit dem Prozess zusammenhängen, der privaten Speicher anfordert.

Damit dies funktioniert, muss das Betriebssystem entweder:

  • Garantieren Sie die Verfügbarkeit des Speichers
  • Lehnen Sie die Speicheranforderung ab (in den meisten Fällen führt dies dazu, dass die Anwendung abstürzt bzw. beendet wird).

Normalerweise weist das System diesen ungenutzten virtuellen Speicher der Auslagerungsdatei zu, und dann belegen nur die tatsächlich verwendeten Teile davon physischen RAM. Indem Sie Ihre Auslagerungsdatei jedoch deaktivieren, zwingen Sie das Betriebssystem, physischen Speicher zu verwenden, um diese Garantien zu bieten. Dies bedeutet, dass Sie am Ende viele auf Null gesetzte Speicherseiten haben, die keinem anderen Prozess zugewiesen werden können.

Wenn Sie eine Auslagerungsdatei haben, benötigt ein Prozess nur zwischen Working Setund Private BytesMenge an physischem Speicher. Wenn Sie Ihre Auslagerungsdatei deaktivieren, Windowsmussweisen Sie ihm den vollen Virtual SizeSpeicher zu oder lehnen Sie die Speicheranforderung ab. (Im Ressourcenmonitor von Windows ist dies die CommitSpalte, da WindowsFestschreibendiese Menge an virtuellem Speicher für den Prozess.

Antwort2

Der Ressourcenmonitor sollte anzeigen, ob Sie tatsächlich freien Speicher haben.

Ressourcenmonitor

Siehe auchGibt es Vorteile oder Nachteile beim Entfernen einer Auslagerungsdatei auf einem Computer mit 8 GB RAM?

verwandte Informationen