Fehlermeldung "Nicht genügend Arbeitsspeicher", wenn Sie eine große Anzahl von Programmen ausführen

Problembeschreibung

Beim Ausführen einer großen Anzahl von Windows-Programmen werden Fehlermeldungen zu "Nicht genügend Arbeitsspeicher" angezeigt, wenn Sie versuchen, neue Programme zu starten oder bereits aktive Programme zu verwenden. Diese Fehlermeldungen treten auch dann auf, wenn noch ausreichend physischer Speicher und Auslagerungsspeicher verfügbar ist.

Ursache

Dieses Verhalten kann auftreten, wenn der Desktopheap im WIN32-Teilsystem ausgeschöpft ist.


Hinweis Dieses Problem tritt häufiger unter Windows NT 3.5 auf, da die Standardgröße des Desktopheaps 512 KB ist. Unter Windows NT 3.1 ist der Standardwert 3072 KB. Der Standardwert wurde verringert, um die Leistung zu erhöhen.

Lösung

Wichtig Dieser Abschnitt bzw. die Methoden- oder Aufgabenbeschreibung enthält Hinweise zum Bearbeiten der Registrierung. Durch die falsche Bearbeitung der Registrierung können schwerwiegende Probleme verursacht werden. Daher ist es wichtig, bei der Ausführung der folgenden Schritte sorgfältig vorzugehen. Als Schutzmaßnahme sollten Sie vor der Bearbeitung der Registrierung eine Sicherungskopie erstellen. So ist gewährleistet, dass Sie die Registrierung wiederherstellen können, falls ein Problem auftritt. Weitere Informationen zum Sichern und Wiederherstellen der Registrierung finden Sie im folgenden Artikel der Microsoft Knowledge Base:
322756 Sichern und Wiederherstellen der Registrierung in Windows
Wenn Sie das Problem automatisch beheben lassen möchten, lesen Sie den Abschnitt "Problem automatisch beheben". Wenn Sie das Problem lieber selbst beheben möchten, lesen Sie den Abschnitt "Problem manuell beheben".

Problem automatisch beheben



Um das Problem automatisch zu beheben, klicken Sie auf die Fix it-Schaltfläche oder den Link Problem beheben. Klicken Sie im Dialogfeld Dateidownload auf Ausführen, und befolgen Sie die Schritte im Fix it-Assistenten.


Hinweise
  • Dieser Assistent ist möglicherweise nur in Englisch verfügbar. Die automatische Korrektur funktioniert aber auch für andere Sprachversionen von Windows.
  • Wenn Sie sich nicht an dem Computer befinden, auf dem das Problem auftritt, speichern Sie die automatische Korrektur auf einem USB-Speicherstick oder einer CD, und führen Sie sie anschließend auf dem vom Problem betroffenen Computer aus.
  • Wenn das Problem hierdurch immer noch nicht beseitigt ist, erhöhen Sie den Arbeitsspeicher des Computers.

Lesen Sie anschließend den Abschnitt "Wurde das Problem behoben?".



Problem manuell beheben

Erhöhen Sie die Größe des Desktopheaps, um dieses Problem zu beheben:
  1. Starten Sie den Registrierungs-Editor (Regedt32.exe).
  2. Öffnen Sie in der Teilstruktur HKEY_LOCAL_MACHINE den folgenden Schlüssel:

    \System\CurrentControlSet\Control\Session Manager\SubSystems
  3. Wählen Sie den Wert Windows aus.
  4. Klicken Sie im Menü Bearbeiten auf Zeichenfolge.
  5. Erhöhen Sie den Parameter "SharedSection".


    Windows NT:
    "SharedSection" legt die System- und Desktopheaps unter Verwendung des folgenden Formats fest:
    SharedSection=xxxx,yyyy
    Fügen Sie ",256" oder ",512" nach der Zahl yyyy hinzu.

    Windows 2000, Windows XP und Windows Server 2003:
    "SharedSection" legt die System- und Desktopheaps unter Verwendung des folgenden Formats fest:
    SharedSection=xxxx,yyyy,zzzz
    Erhöhen Sie für 32-Bit-Betriebssysteme den Wert yyyy auf "12288";
    Erhöhen Sie den Wert zzzz auf "1024".
    Erhöhen Sie für 64-Bit-Betriebssysteme den Wert yyyy auf "20480";
    Erhöhen Sie den Wert zzzz auf "1024".

Weitere Informationen

Windows NT verwendet einen speziellen Speicherheap für alle Windows-Programme, die auf dem Desktop ausgeführt werden. Der Desktopheap wird für alle Objekte (Fenster, Menüs, Stifte, Symbole etc.) verwendet. Wenn eine große Anzahl von Windows-Programmen ausgeführt wird, kann der Speicher dieses Heaps vollständig ausgeschöpft werden. Wenn nicht genügend Speicher verfügbar ist, um eine Speicheranforderung zu erfüllen, gibt das System normalerweise einen Fehler zurück und benachrichtigt den Benutzer, dass Speicher fehlt. Dieser Fehler wird von einigen Programmen nicht ordnungsgemäß behandelt, und in einigen Fällen ist möglicherweise nicht genügend Speicher vorhanden, um das Dialogfeld mit der Fehlermeldung zu erzeugen. Dies führt dazu, dass der angeforderte Vorgang fehlschlägt, ohne dass darauf hingewiesen wird.


Wird der Schlüssel "SharedSection" mit dem Registrierungs-Editor angezeigt, wird er als lange Zeichenfolge dargestellt. Der Standardwert für diesen Schlüssel sieht wie folgt aus:

%SystemRoot%\system32\csrss.exe
ObjectDirectory=\Windows
SharedSection=1024,3072,512
Windows=On
SubSystemType=Windows
ServerDll=basesrv,1
ServerDll=winsrv:GdiServerDllInitialization,4
ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off
MaxRequestThreads=16


Der erste "SharedSection"-Wert (1024) definiert die für alle Desktops geltende Heapgröße. Hierzu gehören die globale Handletabelle (Fensterhandles sind computerweit eindeutig) und gemeinsame Systemeinstellungen (zum Beispiel SystemMetrics). Es ist unwahrscheinlich, dass Sie diesen Wert jemals ändern müssen.

Der zweite "SharedSection"-Wert (3072) steuert die Größe des Desktopheaps, der einer interaktiven Arbeitsstation zugeordnet ist (verwendet für Windows-Objekte). Dieser statische Wert soll Anwendungen mit Fehlverhalten daran hindern, zu viele Ressourcen zu verbrauchen. Da der Desktopheap dem Adressraum jedes Prozesses zugewiesen wird, sollte dieser Wert nicht willkürlich sehr hoch gesetzt werden (da dies die Leistung verringern würde), sondern nur soweit erhöht werden, dass ausreichend Speicher verfügbar ist, um die gewünschten Anwendungen auszuführen.

Der dritte "SharedSection"-Wert (512) steuert die Größe des Desktopheaps für jeden Desktop, der einer nicht interaktiven Arbeitsstation zugeordnet ist. Wenn dieser Wert nicht vorhanden ist, entspricht die Größe des Desktopheaps für nicht interaktive Arbeitsstationen der für interaktive Arbeitsstationen festgelegten Größe (dem zweiten "SharedSection"-Wert).
Weitere Informationen zu den Parametern für den Schlüssel "SharedSection" finden Sie im folgenden Artikel der Microsoft Knowledge Base:

184802 PRB: "User32.dll" oder "Kernel32.dll" wird nicht initialisiert



Wurde das Problem behoben?

  • Testen Sie, ob das Problem behoben ist. Wenn das Problem beseitigt ist, sind Sie mit diesem Abschnitt fertig. Wenn das Problem noch nicht behoben ist, wenden Sie sich an den Support.
  • Ihr Feedback ist uns wichtig. Um uns Ihr Feedback zu übermitteln oder uns über Probleme mit dieser Lösung zu informieren, schreiben Sie einen Kommentar im "Fix it for me"-Blog, oder senden Sie uns eine E-Mail.
Eigenschaften

Artikelnummer: 126962 – Letzte Überarbeitung: 10.11.2010 – Revision: 1

Feedback