Windows 10-Warnungen zu wenig Arbeitsspeicher, wenn ich über ausreichend freien Arbeitsspeicher verfüge

Windows 10-Warnungen zu wenig Arbeitsspeicher, wenn ich über ausreichend freien Arbeitsspeicher verfüge

Ich habe das Problem, dass ich, wenn mein System mehrere Tage lang ohne Neustart läuft, Warnungen wie „Schließen Sie Programme, um Datenverlust zu vermeiden“ und dann einen Dialog mit dem Vorschlag erhalte, Programme zu schließen. Ich kann diesen Schritt entweder abbrechen oder auf „Programme schließen“ klicken, woraufhin Windows das Schließen einiger oder aller im Dialog aufgelisteten Anwendungen erzwingt.

Ich öffne den Task-Manager und sehe, dass derzeit nur etwa 30 % meines Speichers verwendet werden:

33 % Auslastung

Wenn ich den Ressourcenmonitor öffne, um zu sehen, wie viel reservierter Speicher von bestimmten Anwendungen verwendet wird, wird mir immer noch eine relativ geringe Speichernutzung angezeigt:

Ressourcenmonitor

Ich habe dieses Problem schon seit einiger Zeit und habe mich bemüht, eine Lösung zu finden. Ich habe Ursachen wie ein Treiberleck mithilfe von Poolmon untersucht, aber in Poolmon nie etwas gesehen, das mit dem übereinstimmte, was andere als Warnsignale für ein Treiberspeicherleck beschrieben haben. Was mich besonders verwirrt, ist, warum Win10 mir sagt, ich solle Anwendungen schließen, wenn nur 33 % des Systemspeichers genutzt werden.

Antwort1

Hier gibt es wilde Vermutungen.

Sie haben Ihre Auslagerungsdatei deaktiviert, indem Sie einem zufälligen „Optimierungsrat“ gefolgt sind.

Sie haben einen Betriebssystemtreiber, der einen großen Block zusammenhängenden physischen RAM benötigt. Er kann ihn jedoch nicht bekommen, da der gesamte physische RAM im Laufe der Zeit fragmentiert wurde. Und da die Auslagerungsdatei deaktiviert ist, kann er keine RAM-Defragmentierung durchführen.

Aktivieren Sie Ihre Auslagerungsdatei.

Wie gesagt, nur eine wilde Vermutung.

Antwort2

Zu Ihrer letzten Frage – die Kurzfassung: Die Fehlermeldung bezieht sich auf den „festgelegten“ virtuellen Adressraum. Wenn Sie sich das Commit-Charge-Diagramm in Ihrem zweiten Bildschirm-Schnappschuss ansehen, werden Sie feststellen, dass es tatsächlich am oder sehr nahe am Limit liegt.

Die Menge an RAM, die „frei“, „verfügbar“ oder „benutzt“ ist, spielt keine Rolle. Insbesondere ist ein Mangel an „verfügbarem“ RAM absolut nicht der Grund für die Meldung „wenig Arbeitsspeicher“ oder „nicht genügend Arbeitsspeicher“.

Das Commit-Limit entspricht der Gesamtgröße des RAM + der Auslagerungsdatei. Wenn festgeschriebener Speicher zugewiesen wird, wird er sofort als „Commit-Speicher“ belastet, obwohl er noch nicht tatsächlich verwendet wurde. Dies bedeutet, dass kein RAM- oder PF-Speicherplatz sofort verwendet wird. Physischer Speicherplatz (ob im RAM oder in der Auslagerungsdatei) wird nur verwendet, wenn tatsächlich auf den Speicher verwiesen wird. Von da an muss er irgendwo sein, bis das Programm ihn freigibt oder der gesamte Prozess endet.

Beispiel: Angenommen, Sie haben keine Auslagerungsdatei, daher beträgt Ihr Commit-Limit 16 GB (Ihre RAM-Größe). Nehmen wir nun an, dass 8 Prozesse jeweils versuchen, 1 GB per VirtualAlloc(MEM_COMMIT) zuzuweisen. Ergebnis: Die Commit-Gebühr erhöht sich um 8 GB. Es gibt jedoch keine unmittelbaren Auswirkungen auf den RAM! Es ist, als ob Sie im Schreibwarenladen einen Block Papier gekauft hätten, aber tatsächlich kein Papier bekommen hätten. Jedes Mal, wenn Sie ein neues Blatt benötigen, erscheint jedoch wie von Zauberhand eines. Bis Sie den ganzen Block (die Größe des zugewiesenen Bereichs) aufgebraucht haben.

Nehmen wir nun an, dass jeder dieser Prozesse tatsächlich nur auf 100 MB seines 1 GB zugreift. Der verwendete RAM würde nur 800 MB betragen.

Aber da jeder von ihnenkönnteUm alle 1 GB zu referenzieren, muss das Betriebssystem sicherstellen, dass 8 GB RAM+Auslagerungsdateispeicherplatz ... also nur RAM im Fall einer fehlenden Auslagerungsdatei ... verfügbar gehalten werden, nur für den Fall, dass das passiert. Um auf den Schreibwarenladen zurückzukommen: Sie müssen genügend Papier auf Lager haben, um jedem so viele Blätter zu geben, wie er zuvor gekauft hat.

Dementsprechend muss das Betriebssystem die Ausführung von VirtualAlloc(MEM_COMMIT) beenden, wenn die aktuell festgeschriebene Menge den Grenzwert erreicht.

Warum? Weil der Prozess das Ergebnis von VirtualAlloc überprüfen soll, um zu sehen, ob es erfolgreich war. Sobald dies geschehen ist und festgestellt wurde, dass die Zuweisung erfolgreich war, kann der Prozess mit Recht davon ausgehen, dass seine nachfolgenden Verweise auf die gesamte festgeschriebene Region erfolgreich sein werden.

Wenn Windows zulässt, dass die Commit-Gebühr den zur Realisierung dieses Speicherplatzes verfügbaren Speicherplatz übersteigt, kann diese Erwartung nicht immer erfüllt werden.

Eine schnelle Problemumgehung besteht darin, die Standardgröße (= Anfangsgröße) Ihrer Auslagerungsdatei zu erhöhen. Aus der obigen Erklärung sollte ersichtlich sein, warum dadurch die Fehlermeldung vermieden wird.obwohl möglicherweise nie etwas in diese Datei geschrieben wird. Auch hier stellt das Betriebssystem sicher, dass Platz für die gesamte Commit-Gebühr vorhanden istfalls es nötig ist. Wenn Prozesse festgeschriebenen Speicher allokieren, sagen sie damit nur: „Hey, OS, ichkönnteso dringend brauchen." Das heißt aber nicht, dass sie es auch wirklich nutzen werden, und schon gar nicht, dass sie es schon genutzt haben.

Weitere Informationen finden Sie untermeine Antwort hier.

Jetzt....WarumSie verwenden so viel Commit, wenn Ihre Prozesse nicht dazu ausreichen, ist eine andere Frage. Um dies zu untersuchen, zeigen Sie bitte die Registerkarte „Leistung“ des Task-Managers im Abschnitt „Speicher“ an.

Antwort3

Eine weitere Möglichkeit ist, dass Sie Win10 32-Bit und nicht 64-Bit verwenden. Obwohl Sie 16 GB RAM installiert haben, gibt es Einschränkungen des 32-Bit-Betriebssystems, die die praktische Nutzung über 4 GB lückenhaft machen. Darüber hinaus legt das Betriebssystem harte Grenzen /pro Prozess/ fest, wie viel RAM angefordert werden kann, unabhängig vom physischen RAM. Wenn dies der Fall ist, können Sie nicht viel tun, außer auf ein 64-Bit-Betriebssystem umzusteigen oder weniger Anwendungen gleichzeitig auszuführen.

verwandte Informationen