Warum ist die vom Windows Task-Manager gemeldete Gesamtspeicherauslastung viel höher als die Summe der Speicherauslastung aller Prozesse? [Duplikat]

98

Der Task-Manager zeigt meine Gesamtspeicherauslastung bei 90% meiner 6 GB an, aber kein einzelner Prozess belegt mehr als 250 MB RAM, und die Summe der RAM-Auslastung aller ausgeführten Prozesse beträgt weniger als 2 GB. Ich habe es versucht:

  • Anzeigen der Zahlen in der Spalte "Speicher" auf der Registerkarte "Prozesse" des Windows 8-Task-Managers.
  • Anzeigen der Spalten "Arbeitssatz", "Privater Arbeitssatz", "Gemeinsamer Arbeitssatz" und "Commit-Größe" auf der Registerkarte "Details" des Task-Managers.
  • Betrachten Sie ähnliche speicherbezogene Spalten im Process Explorer.
  • Ich habe versucht, Sysinternals RAMMap auszuführen, aber während ich die Krise mit dem niedrigen Arbeitsspeicher habe, stürzt es beim Start ab. Sobald ich das Problem behoben habe, wird RAMMap normal ausgeführt, aber zu diesem Zeitpunkt ist es zu spät.

Alle zeigen eine ziemlich kleine Menge an verwendetem Speicher.

Es gibt viele Leute, die Varianten dieser Frage mit verschiedenen Windows-Versionen über das Internet stellen. Einige von ihnen schaffen es, ihre Probleme mit geringem Arbeitsspeicher zu lösen, häufig durch Neuinstallation von Software. manchmal durch Neuinstallation von Windows von Grund auf neu. Ich suche nach einer Antwort auf die allgemeinen Fragen, die diese alle gemeinsam haben und die an keiner anderen Stelle beantwortet zu werden scheinen:

  1. Warum ist der insgesamt belegte Speicher viel höher als der von allen aufgelisteten Prozessen belegte Speicher, unabhängig davon, wie ich versuche, sie zu zählen?
  2. Wie könnte Windows "wissen", dass Speicher verwendet wird, ohne zu wissen, welches Programm es verwendet?
  3. Welche Prozesse verbrauchen möglicherweise Speicher, werden aber nicht in der Liste angezeigt?
  4. Gibt es eine Software, die weitere Informationen zum verwendeten Speicher liefert?

Spezifische Details zu meinem eigenen Problem: Seit dem Upgrade auf Windows 8.1 tritt das Problem auf, sobald ich mich anmelde. Sobald ich ein Programm ausgeführt habe, ist mir der Speicher erschöpft. Ich habe im Process Explorer festgestellt, dass mehrere Instanzen von iexplore.exe ausgeführt wurden und anscheinend automatisch gestartet wurden. In einer bestimmten Instanz wurden nur wenige MB RAM verwendet, es traten jedoch Hunderte Millionen Seitenfehler auf. Aus einer Laune heraus habe ich diesen bestimmten Prozess beendet und die Speichernutzung ging sofort um 70% zurück.

Führt zu einer bestimmten Frage:

  • Wie könnte man einen Prozess beenden, der angeblich nur ein paar MB verbraucht, um mehrere GB freizugeben?

Und eine (vermutlich harte) Bonusfrage:

  • Wie kann ich nach der Neuinstallation von Windows vermeiden, dass ich jedes Mal, wenn ich meinen Computer neu starte, dies durchlaufen muss?
Josh
quelle
3
Auch der Kernel-Speicher zählt zur Auslastung. Post Bild von RAMMAp: blogs.technet.com/b/askperf/archive/2010/08/13/…
magicandre1981
2
Ich denke, die Frage sollte heißen "Warum geht mir der Speicher aus?".
Surfasb
Diese Frage ist ohne nähere Angaben nicht zu beantworten. Listen Sie die installierten Programme auf. Oder noch besser, ein Dump der laufenden Prozesse aus dem Systemmonitor.
Surfasb
1
Fahren Sie Ihren Computer tatsächlich herunter oder starten Sie ihn neu, oder verwenden Sie das hybride Herunterfahren (Standardeinstellung in Windows 8)? Nach dem Umstieg auf Windows 8 hatte ich ein ähnliches Problem. Ich gehe davon aus, dass ein Treiber immer mehr von meinem physischen Arbeitsspeicher in Anspruch nahm und ihn auch nach dem Aus- und Einschalten des Computers nicht zurückgab. In wenigen Wochen hat es sich auf mehrere Gigabyte angesammelt. Also klicke ich jetzt alle paar Tage auf "Neustart" oder halte die Umschalttaste gedrückt, während ich auf "Herunterfahren" klicke, um den PC tatsächlich herunterzufahren.
Robert
2
In meinem Fall handelte es sich um "Driver Locked" -Speicher, der von Hyper-V reserviert wurde, weil "Dynamic Memory" aktiviert wurde. Ich musste alle VMs stoppen, die Einstellung deaktivieren und neu starten. Vielen Dank für den RAMMap-Vorschlag.
Dagelf

Antworten:

7

Übrigens sollten Sie versuchen, den Begriff "Gedächtnis" nicht zu verwenden. Es schafft viel Verwirrung. Wenn Sie physischen Speicher meinen, sagen Sie "physischer Speicher" oder "RAM". Wenn Sie virtuellen Speicher meinen, sagen Sie es. Sagen Sie es, wenn Sie das Hinterlegen eines Speichers meinen.

Warum ist der insgesamt belegte Speicher viel höher als der von allen aufgelisteten Prozessen belegte Speicher, unabhängig davon, wie ich versuche, sie zu zählen?

Weil das Betriebssystem keinen physischen Speicher (RAM) verschwendet, es sei denn, es hat keine andere Wahl.

Wie könnte Windows "wissen", dass Speicher verwendet wird, ohne zu wissen, welches Programm es verwendet?

Weil kein Programm es benutzt. Betrachten Sie beispielsweise den Speicher, der den Code für ein Programm enthält, das gerade beendet wurde. Kein Programm benutzt es. Dieser Speicher wird jedoch verwendet, da er nicht frei ist und möglicherweise nützliche Daten enthält (falls das Programm erneut ausgeführt wird).

Welche Prozesse verbrauchen möglicherweise Speicher, werden aber jetzt in der Liste angezeigt?

Es wird nicht von Prozessen verwendet.

Gibt es eine Software, die weitere Informationen zum verwendeten Speicher liefert?

RAMMap kann das.

Es gibt nur zwei Möglichkeiten, RAM kann verwendet werden oder es kann verschwendet werden. Offensichtlich ist das erste besser. Jeder freie Speicherplatz wird für immer verschwendet - ein 4-GB-Computer kann heute nicht 2 GB verwenden, um morgen 6 GB zu nutzen. Wenn Sie denken "Ich möchte es jetzt kostenlos, damit ich es später verwenden kann", vergessen Sie das. Sie können es jetzt und später verwenden.

Wie könnte man einen Prozess beenden, der angeblich nur ein paar MB verbraucht, um mehrere GB freizugeben?

Ihnen geht der Backup-Speicher aus, nicht der physische Speicher. Sie haben genügend freien physischen Speicher, aber nicht genügend Sicherungsspeicher für das Betriebssystem, um weiterhin virtuellen Speicher zuzuweisen, für den möglicherweise eine Sicherung erforderlich ist.

Der Prozess verwendete nur wenige MB physischen Speicher, aber das Betriebssystem musste möglicherweise mehrere GB gesicherten virtuellen Speicher dafür reservieren. Angenommen, ein Prozess erstellt eine beschreibbare Zuordnung des privaten Speichers einer 2-GB-Datei. Das Betriebssystem muss 2 GB gesicherten virtuellen Speicher für den Prozess reservieren, da möglicherweise in jedes einzelne Byte dieser Zuordnung geschrieben wird. Außerdem könnte es niemals einem von ihnen schreiben. Aus diesem Grund benötigen Sie eine große Auslagerungsdatei.

Moderne Betriebssysteme schreiben viele Schecks (vielversprechender Backing Store), die niemals eingelöst werden (RAM erforderlich). Sie können keine Schecks mehr ausstellen (vielversprechender Backing Store), auch wenn Sie über genügend Geld auf der Bank verfügen (freier Arbeitsspeicher), wenn Sie bereits eine Reihe großer Schecks ausgestellt haben, die möglicherweise eingelöst werden (vielversprechender Backing Store) wie Sie). Auslagerungsdateien fügen einen Sicherungsspeicher hinzu, sodass das Betriebssystem weiterhin Prüfungen schreiben kann.

David Schwartz
quelle
14
PS: Ich verwende das Wort "Speicher" nicht, weil ich den Unterschied zwischen RAM und VM nicht kenne, sondern weil mein Computer mir nur sagt, dass der "Speicher" nicht ausreicht, ohne mir Informationen darüber zu geben, was er eigentlich ist meint. (Ich nehme an, es bedeutet RAM, aus den Gründen, die ich im vorherigen Kommentar angegeben habe, aber ich bin nicht sicher.) Ich würde es vorziehen, dass Sie das echte Vokabular (das ich bei Bedarf nachschlagen kann) verwenden, als finanzielle Metaphern auszuarbeiten :)
Josh
91
-1, da nach dem Lesen der Antwort und aller Kommentare immer noch nicht klar ist, warum der insgesamt belegte Speicher viel höher ist als der von allen aufgelisteten Prozessen belegte Speicher.
Bennett McElwee
6
Diese Terminologie, in der Speicher "verwendet" wird, obwohl kein Programm ihn verwendet, ist ganz anders als die normale Bedeutung von Wörtern wie "verwendet" und "frei" - vielleicht ist es die Terminologie von Microsoft, nicht Ihre. Angenommen, 50% des Arbeitsspeichers werden derzeit von laufenden Programmen verwendet, und 25% werden von keinem laufenden Programm verwendet, sondern enthalten Daten, die möglicherweise in der Zukunft nützlich sind, aber auch verworfen werden können. Wenn Sie diese addieren und "Memory: 75%" anzeigen, erhält der Benutzer keine nützlichen Informationen. Ich denke, das ist der Grund für die weit verbreitete Verwirrung.
Bennett McElwee
2
@BennettMcElwee Es gibt keine gute Möglichkeit, die Speichernutzung auf eine einfache Zahl zu reduzieren, aber die Benutzer bestehen darauf. Dies bringt Entwickler in eine unangenehme Lage - sie können eine Nummer angeben, die nicht immer hilfreich ist, oder sie geben keine Nummer an. Die meisten OS- und GUI-Entwickler wählen die erste Option - sie geben eine Zahl an, die zu viel Verwirrung führt. Wenn Ihre Frage lautet "Würde mehr RAM dazu führen, dass mein System besser funktioniert", lautet die Antwort - es ist sehr, sehr schwer zu sagen, auch für Experten.
David Schwartz
2
@DavidSchwartz Deine Antwort erklärt das nicht, sie sagt es einfach aus. Können Sie Links zur Untermauerung dieser spezifischen Behauptung bereitstellen? Ich interpretiere "Physischer Arbeitsspeicher XX%" so, dass XX% des physisch installierten Arbeitsspeichers derzeit verwendet wird und für andere Prozesse nicht verfügbar ist. Ich bin davon überzeugt, dass das System bei mehr als 90% zu Abstürzen neigt. Wenn Anwendungen versuchen, mehr als 100% Speicher zuzuweisen, stürzen sie vollständig ab. Nach meiner Erfahrung ist dies nicht das Standardregime, in dem die meisten Systeme arbeiten.
John Neuhaus