Je-li spuštěn velký počet programů, zobrazí se chybová zpráva Nedostatek paměti

Příznaky

Je-li v systému Windows spuštěn velký počet programů, zobrazuje se při pokusu o spuštění nových programů nebo použití již spuštěných programů chybová zpráva Nedostatek paměti, přestože je k dispozici dostatečné množství fyzické paměti i paměti stránkovacího souboru.

Příčina

Toto chování může nastat v případě, že je vyčerpána halda plochy v subsystému Win32.


Poznámka: K těmto potížím častěji dochází v systému Windows NT 3.5, kde je výchozí velikost haldy plochy 512 kB. V systému Windows NT 3.1 je výchozí hodnotou 3072 kB. Výchozí hodnota byla snížena za účelem zvýšení výkonu.

Řešení

Důležité: Tato část, metoda nebo úkol obsahuje kroky, které popisují úpravu registru. V případě úpravy registru nesprávným způsobem však mohou nastat závažné problémy. Proto vždy pečlivě kontrolujte, zda postupujete přesně podle těchto kroků. Jako dodatečnou ochranu registr před úpravami zálohujte. Potom můžete v případě problému registr obnovit. Další informace o zálohování a obnovení registru naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
322756 Postup zálohování a obnovení registru v systému Windows
Chcete-li, abychom tyto potíže vyřešili za vás, přejděte k části Automatická oprava. Chcete-li tyto potíže vyřešit sami, přejděte k části Manuální oprava.

Automatická oprava



Chcete-li tyto potíže odstranit automaticky, klikněte na tlačítko nebo odkaz Opravit. V dialogovém okně Stažení souboru klikněte na položku Spustit a postupujte podle kroků v průvodci opravou.


Poznámky:
  • Tento průvodce může být k dispozici pouze v angličtině. Tato automatická oprava však funguje i pro ostatní jazykové verze systému Windows.
  • Pokud právě nejste u počítače, který má tyto potíže, můžete opravu uložit na jednotku USB Flash nebo na disk CD a spustit ji v příslušném počítači později.
  • Pokud se potíže nevyřešily, navyšte velikost paměti v počítači.

Poté přejděte k části Byly potíže vyřešeny?.



Manuální oprava

Chcete-li tyto potíže odstranit, zvětšete velikost haldy plochy:
  1. Spusťte program Editor registru (Regedt32.exe).
  2. Z podstromu HKEY_LOCAL_MACHINE přejděte na následující klíč:

    \System\CurrentControlSet\Control\Session Manager\SubSystems
  3. Vyberte hodnotu Windows.
  4. V nabídce Úpravy vyberte možnost Řetězec.
  5. Zvyšte hodnotu parametru SharedSection.


    V systému Windows NT:
    Parametr SharedSection určuje systém a haldu plochy v následujícím formátu:
    SharedSection=xxxx,yyyy
    Za číslo yyyy přidejte hodnotu ",256" nebo ",512".

    V systémech Windows 2000, Windows XP a Windows Server 2003:
    Parametr SharedSection používá k určení systému a haldy plochy následující formát:
    SharedSection=xxxx,yyyy,zzzz
    U 32bitových operačních systémů zvyšte hodnotu yyyy na 12288.
    Údaj zzzz zvyšte na hodnotu 1024.
    U 64bitových operačních systémů zvyšte hodnotu yyyy na 20480.
    Údaj zzzz zvyšte na hodnotu 1024.

Další informace

Systém Windows NT používá pro všechny programy systému Windows spuštěné na ploše speciální haldu paměti. Halda plochy se používá pro všechny objekty (okna, nabídky, pera, ikony atd.). Je-li spuštěn velký počet programů systému Windows, může v této haldě dojít k nedostatku paměti. Není-li k dispozici dostatek paměti pro splnění požadavku na přidělení, systém za běžných okolností zobrazí chybu a upozorní uživatele na nedostatek paměti. Některé programy však tuto chybu řádně nezpracují a v některých případech nemusí být k dispozici dostatek paměti pro vytvoření dialogového okna s chybovou zprávou. Následkem toho se požadovaná operace nezdaří a nezobrazí se žádné upozornění.


Klíč SharedSection je v programu Editor registru zobrazen jako dlouhý řetězec. Výchozí hodnota tohoto klíče je následující.

%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


První hodnota klíče SharedSection (1024) určuje velikost haldy společné pro všechny plochy. Sem patří i tabulka globálních ukazatelů (ukazatele systému Windows jsou v rámci celého počítače jedinečné) a sdílené nastavení systému (například nastavení SystemMetrics). Není pravděpodobné, že bude někdy třeba tuto hodnotu změnit.

Druhá hodnota klíče SharedSection (3072) řídí velikost haldy plochy související s interaktivní stanicí Window (používané pro objekty systému Windows). Tato statická hodnota brání špatně fungujícím aplikacím ve spotřebování příliš velkého množství prostředků. Protože je halda plochy mapována na adresní prostor každého procesu, nedoporučuje se tento údaj nastavit na libovolně vysokou hodnotu (došlo by tím ke snížení výkonu), ale pouze na takovou hodnotu, která umožní spuštění všech požadovaných aplikací.

Třetí hodnota klíče SharedSection (512) řídí velikost haldy plochy pro každou plochu přidruženou k neinteraktivní stanici Window. Pokud tato hodnota neexistuje, bude velikost haldy plochy pro neinteraktivní stanice Window stejná jako velikost zadaná pro interaktivní stanice Window (druhá hodnota klíče SharedSection).
Další informace o parametrech klíče SharedSection naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

184802 PRB: Inicializace knihovny User32.dll nebo Kernel32.dll se nezdaří



Byly potíže vyřešeny?

  • Ověřte, zda jsou potíže vyřešeny. Pokud ano, v této části již pro vás nejsou žádné potřebné informace. Pokud potíže přetrvávají, můžete kontaktovat podporu.
  • Uvítáme vaše názory. Chcete-li nám sdělit svůj názor nebo nahlásit potíže s tímto řešením, uveďte poznámky v blogu Fix it for me (Automatická oprava) nebo nám odešlete e-mail.
Vlastnosti

ID článku: 126962 - Poslední kontrola: 10. 11. 2010 - Revize: 1

Váš názor