2014-03-11 02:46:08 +0000 2014-03-11 02:46:08 +0000
104
104

Warum ist der vom Windows Task-Manager gemeldete Gesamtspeicherverbrauch viel höher als die Summe des Speicherverbrauchs aller Prozesse?

Der Task-Manager zeigt meine gesamte Speichernutzung bei 90 % meiner 6 GB an, aber kein einziger Prozess verbraucht mehr als 250 MB RAM, und die Summe der RAM-Nutzung aller laufenden Prozesse ist kleiner als 2 GB. Ich habe es versucht:

  • Ich habe mir die Zahlen in der Spalte “Speicher” auf der Registerkarte “Prozesse” im Windows 8 Task-Manager angesehen. & - Ich habe mir die Spalten “Arbeitsgruppe”, “Private Arbeitsgruppe”, “Gemeinsame Arbeitsgruppe” und “Commit Size” auf der Registerkarte “Details” des Task-Managers angesehen.
  • Ich schaue mir ähnliche speicherbezogene Spalten im Process Explorer an.
  • Ich habe versucht, Sysinternals RAMMap auszuführen, aber während ich die Krise mit wenig Speicher habe, stürzt es beim Start ab. Sobald ich das Problem behoben habe, läuft RAMMap normal, aber dann ist es zu spät.

Alle zeigen an, dass ziemlich wenig Speicher verwendet wird.

Es gibt viele Leute, die Varianten dieser Frage stellen, mit verschiedenen Versionen von Windows, überall im Internet. Einige von ihnen schaffen es, ihre Probleme mit wenig Speicher zu lösen, oft durch eine Neuinstallation von Software; manchmal durch eine Neuinstallation von Windows von Grund auf. Ich bin auf der Suche nach einer Antwort auf die allgemeinen Fragen, die alle gemeinsam haben und die scheinbar nirgendwo anders beantwortet werden:

  1. Warum ist der insgesamt verwendete Speicher viel höher als der von allen aufgelisteten Prozessen verwendete Speicher, egal wie ich versuche, sie zu zählen?
  2. Wie kann Windows “wissen”, dass Speicher verwendet wird, ohne zu wissen, welches Programm ihn verwendet?
  3. Welche Prozesse könnten möglicherweise Speicher verbrauchen, aber nicht in der Liste auftauchen?
  4. Gibt es irgendeine Software, die mehr Informationen über den benutzten Speicher geben kann?

Details speziell zu meinem eigenen Problem: Seit dem Upgrade auf Windows 8.1 tritt das Problem auf, sobald ich mich anmelde. Mir geht der Speicher aus, sobald ich irgendein Programm ausführe. Ich habe im Prozess-Explorer bemerkt, dass mehrere Instanzen von iexplore.exe liefen, die offenbar automatisch gestartet wurden. Eine bestimmte Instanz beanspruchte nur ein paar MB RAM, zeigte aber Hunderte von Millionen von Seitenfehlern. Aus einer Laune heraus beendete ich diesen speziellen Prozess, und die Speichernutzung sank sofort um 70 %.

Das führt zu einer bestimmten Frage:

  • Wie konnte das Beenden eines Prozesses, der angeblich nur ein paar MB verbrauchte, mehrere GB freigeben?

Und eine (vermutlich harte) Bonusfrage:

  • Wie könnte ich, abgesehen von einer Neuinstallation von Windows, vermeiden, dass ich dies bei jedem Neustart meines Computers durchmachen muss?

Antworten (1)

6
6
6
2014-03-11 05:23:42 +0000

Übrigens sollten Sie versuchen, den Begriff “Speicher” nicht zu verwenden. Er schafft eine Menge Verwirrung. Wenn Sie physischen Speicher meinen, sagen Sie “physischer Speicher”, oder “RAM”. Wenn Sie virtuellen Speicher meinen, sagen Sie es. Wenn Sie Backing Store meinen, sagen Sie es so.

Warum ist der gesamte verwendete Speicher viel höher als der von allen aufgelisteten Prozessen verwendete Speicher, egal wie ich versuche, sie zu zählen?

Weil das Betriebssystem keinen physikalischen Speicher (RAM) verschwendet, wenn es keine andere Wahl hat.

Wie kann Windows “wissen”, dass Speicher verwendet wird, ohne zu wissen, welches Programm ihn verwendet?

Weil kein Programm ihn benutzt. Betrachten Sie zum Beispiel den Speicher, der den Code für ein Programm enthält, das gerade beendet wurde. Er wird von keinem Programm verwendet. Aber dieser Speicher wird verwendet, da er nicht frei ist und Daten enthält, die nützlich sein könnten (für den Fall, dass das Programm wieder läuft).

Welche Prozesse könnten möglicherweise Speicher verbrauchen, aber jetzt in der Liste auftauchen?

Er wird nicht von Prozessen benutzt.

Gibt es eine Software, die mehr Informationen über den belegten Speicher geben kann? RAMMap kann dies tun.

Es gibt nur zwei Möglichkeiten, RAM kann genutzt werden oder es kann verschwendet werden. Offensichtlich ist die erste Möglichkeit besser. Jeder freie Speicher ist für immer verschwendet – eine 4GB-Maschine kann nicht heute 2GB verwenden, um morgen 6GB zu nutzen. Wenn Sie denken “Ich will ihn jetzt frei haben, damit ich ihn später benutzen kann”, vergessen Sie das. Sie können es jetzt nutzen und es später nutzen.

Wie kann das Beenden eines Prozesses, der angeblich nur ein paar MB verbraucht, mehrere GB freigeben?

Ihnen geht der Sicherungsspeicher aus, nicht der physische Speicher. Sie haben reichlich freien physischen Speicher, aber nicht genug Backing Store, damit das Betriebssystem weiterhin virtuellen Speicher zuweisen kann, der möglicherweise Backing benötigt.

Der Prozess hat nur ein paar MB physischen Speicher verwendet, aber das Betriebssystem musste möglicherweise mehrere GB an gesichertem virtuellem Speicher für ihn reservieren. Nehmen wir zum Beispiel an, ein Prozess erstellt eine beschreibbare, private Speicherabbildung einer 2 GB großen Datei. Das Betriebssystem muss 2 GB an gesichertem virtuellem Speicher für den Prozess reservieren, da er in jedes einzelne Byte dieser Abbildung schreiben könnte. Es könnte aber auch sein, dass es nie in eines davon schreibt. Deshalb brauchen Sie eine gut dimensionierte Auslagerungsdatei.

Moderne Betriebssysteme schreiben viele Schecks (versprechen Backing Store), die nie eingelöst werden (benötigen RAM). Sie können nicht weiter Schecks ausstellen (Backing Store versprechen), selbst wenn Sie viel Geld auf der Bank haben (freier RAM), wenn Sie bereits einen Haufen großer Schecks ausgestellt haben, die eingelöst werden könnten oder auch nicht (so viel Backing Store versprechen, wie Sie haben). Auslagerungsdateien fügen Sicherungsspeicher hinzu und erlauben es dem Betriebssystem, weiterhin Schecks auszustellen.

Verwandte Fragen

8
19
13
6
2