Stack Speicher / Nicht genug Speicher vorhanden

c-mate

Rear Admiral
Registriert
Aug. 2010
Beiträge
5.617
Hi,
wir haben hier auf einem Notebook ein Problem mit dem Speicher und zwar ist eigentlich genug Ram vorhanden, es kommt aber die Fehlermeldung "Nicht genug Speicher vorhanden"
Laut eines Kollegen soll das mit dem "Stack Speicher" zu tun haben.
Kennt das jemand bzw gibt es die Möglichkeit in XP Pro diesen Stack Speicher zu bgeeinflussen?

THX
 
Das Notebook hat 4GB Ram und die Auslagerungsdatei ist aktiviert bzw läuft in Standardeinstellungen.
 
Es gibt immer wieder Ressourcenfressende Anwendungen.

Schau mal im Taskmanager wieviel USER und GDI Recourcen verbraucht sind.
Bei 10000 ist ohne Reg.Eingriffe Schluss:

unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
da
GDIProcessHandleQuota und
USERProcessHandleQuota
beide auf 15.000

Auch der Dektop Heap im Win32 Subsystem kann zu klein sein:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems
da Windows
SharedSection=1024,5120,512 anstatt SharedSection=1024,3072,512
 
Habe ein ähnliches Problem mit meinem alten XP Notebook. Von 512M auf 2GB RAM aufgerüstet, aber schon wenn 1.5G benutzt werden, bekommen einige Apps keinen Speicher mehr. Programmiere selbst einiges, was dann auch schon mal sehr speicherhungerig wird aber auch Firefox mit vielen Tabs passierte das gleiche.
Swap und Co sind ausreichend dimensioniert, aber diese Quotas kannte ich noch nicht:
GDIProcessHandleQuota und USERProcessHandleQuota waren auf 10000, habe jetzt 15000 eingestragen.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems hat bei mir aber kein SharedSection Schlüssel. Wie muß der aussehen?
 
Stacks benutzen vor allem 16Bit Programme, die direkt auf Hardwareinterrupts zugreifen. Dabei kann es zu einem Stapelüberlauf kommen, wenn die Stacks zu klein oder nicht definiert wurden.

Stacks werden über die Config.sys bzw. Config.nt definiert.

http://support.microsoft.com/kb/84300/de

Bei älteren 16Bit Anwendungen würde ich diese EXE per PIF starten, womit man eine Speicherbegrenzung angeben kann.

"SharedSection" bezeichnet die Heap-Grösse.
http://support.microsoft.com/kb/184802/de

Du gehst dazu in den Schlüssel

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems

Dann machst du einen Doppelklick auf den Eintrag "Windows", dort findest du dann die Werte.
 
Zuletzt bearbeitet:
Mhm ok dass das nciht ienfach zu verstehen ist dachte ich mir schon :)
Ich habe jetzt mal testweise Windows 7 installiert und damit läuft alles wie geschmiert. das Problem dabei ist nur, wenn ich jetzt 50 PCs auf Win 7 umstelle, dann bringt das leider wieder andere Inkompabilitäten mit sich...
 
Welche Anwendung bringt die Meldung wenn ich fragen darf? Oder hab ich es überlesen?

Lass dich mal nicht vom Wortlaut der Meldung irretieren: Erstelle z.B. eine Datei Namens test.bat und führe sie direkt aus, oder öffne eine .exe-Datei mit dem Notepad und speichere sie und führe sie aus (vorher Sicherheitskopie anlegen!).

Die Meldung besagt nur, dass sich Windows geweigert hat deiner Anwendung Speicher zuzuweisen.

Der Windows-Audiorecorder unter WinXP bringt z.B. wenn du mehr als 2 oder 3 GB Arbeitsspeicher hast die folgende Meldung:

Code:
---------------------------
Audiorecorder
---------------------------
Nicht genügend Arbeitsspeicher, um den Befehl auszuführen. Beenden Sie eine oder mehrere Anwendungen, und wiederholen Sie den Vorgang.
---------------------------
OK   
---------------------------

Im Übrigen eröffnet jede Funktion/Prozedur ihren eigenen Stack. Egal ob 16, 32 oder 64 bit. Die Ausnahme sind Inline-Funktionen.
 
Zurück
Oben