Съобщение за грешка "Няма достатъчно памет", когато имате голям брой изпълнявани програми

Преводи на статии Преводи на статии
ID на статията: 126962 - Преглед на продукти, за които се отнася тази статия.
Разгъване на всички | Сгъване на всички

СИМПТОМИ

Когато изпълнявате голям брой програми, базирани на Windows, се появяват съобщения за грешка "Няма достатъчно памет", когато опитате да стартирате нови програми или опитате да използвате програми, които вече се изпълняват дори и да имате все още в наличност много физическа памет и памет във файла за виртуална памет.

ПРИЧИНА

Такова поведение може да възникне, ако се е изчерпала свободната памет на работния плот в подсистемата WIN32.

Забележка Този проблем възниква по-често при Windows NT 3.5, тъй като по подразбиране размерът на свободната памет на работния плот е 512 K. При Windows NT 3.1 стойността по подразбиране е 3072 K. Стойността по подразбиране е намалена, за да се подобри производителността.

РАЗРЕШЕНИЕ

Важно Този раздел, метод или задание съдържа информация за модифициране на системния регистър. Имайте предвид, че при неправилна промяна на системния регистър е възможно да възникнат сериозни проблеми. Затова спазвайте внимателно тези стъпки. За допълнителна сигурност направете резервно копие на системния регистър, преди да го промените. В случай на възникване на проблем чрез това копие ще можете да възстановите системния регистър. За допълнителна информация как да направите резервно копие на системния регистър или да го възстановите, щракнете върху следния номер на статия от базата знания на Microsoft, за да я прегледате:
322756 Създаване на резервно копие и възстановяване на системния регистър в Windows
За да решим проблема вместо вас, отидете на раздела "Решете моя проблем". Ако предпочитате да решите проблема сами, отидете на раздела "Нека реша проблема сам".

Решете моя проблем



За да решите автоматично този проблем, щракнете върху бутона или връзката Fix it. Щракнете върху Изпълнение в диалоговия прозорец Изтегляне на файлове и следвайте стъпките в съветника "Fix it".

Решаване на проблема
Microsoft Fix it 50496

Забележки
  • Възможно е този съветник да е само на английски език. Автоматичната корекция обаче работи и за други езикови версии на Windows.
  • Ако не сте на проблемния компютър, можете да запишете решението "Fix it" на флаш устройство или компактдиск и след това да го изпълните на проблемния компютър.
  • Ако това не е решило проблема, увеличете паметта за вашия компютър.

След това отидете на раздела "Това реши ли проблема?".



Нека реша проблема сам

За да коригирате този проблем, повишете размера на свободната памет на работния плот:
  1. Изпълнете редактора на системния регистър (Regedt32.exe).
  2. От поддървото
    HKEY_LOCAL_MACHINE
    отидете на следния ключ:
    \System\CurrentControlSet\Control\Session Manager\SubSystems
  3. Изберете стойността Windows.
  4. В менюто Edit (Редактиране) щракнете върху Permissions (Разрешения).
  5. Повишете параметъра SharedSection.

    За Windows NT:
    SharedSection указва свободната памет на системата и работния плот, като използва следния формат:
    SharedSection=xxxx,yyyy
    Добавете ",256" или ",512" след числото yyyy.

    За Windows 2000, Windows XP и Windows Server 2003:
    SharedSection използва следния формат, за да укаже свободната памет на системата и работния плот:
    SharedSection=xxxx,yyyy,zzzz
    За 32-битови операционни системи повишете стойността yyyy до "12288";
    Повишете стойността zzzz до "1024".
    За 64-битови операционни системи повишете стойността yyyy до "20480";
    Повишете стойността zzzz до "1024".

ДОПЪЛНИТЕЛНА ИНФОРМАЦИЯ

Windows NT използва специална свободна памет за всички базирани на Windows програми, изпълнявани на работния плот. Свободната памет на работния плот се използва за всички обекти (прозорци, менюта, пера, икони и др.). Когато се изпълняват голям брой програми, тази свободна памет може да не стигне. Когато няма достатъчно памет, за да се удовлетвори искане за заделяне на памет, системата обикновено връща грешка и уведомява потребителя, че паметта е недостатъчно. Някои програми не се грижат за обработване на тази неизправност и в някои случаи може да няма достатъчно памет за създаване на диалоговия прозорец за съобщение за грешка. В резултат на това исканата операция е неуспешна, без никакво указание за това.

Ключът SharedSection е дълъг низ, когато се разглежда с редактора на системния регистър. Стойността по подразбиране за този ключ е следната.
   %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
				


Първата стойност на SharedSection (1024) дефинира размера на свободната памет, общ за всички работни плотове. Това включва таблицата на глобалния манипулатор (манипулаторите на Windows са уникални за целия компютър) и споделените системни настройки (като SystemMetrics). Едва ли някога ще ви е необходимо да променяте тази стойност.

Втората стойност на SharedSection (3072) определя размера на свободната памет на работния плот, свързана с интерактивна терминална станция (използвана за обекти на Windows). Тази статична стойност се използва за предотвратяване някои приложения с неправилно поведение да консумират твърде много ресурси. Тъй като свободната памет на работния плот се нанася в адресното пространство на всеки процес, тази стойност не трябва да се задава произволно висока (тъй като това би намалило производителността), а трябва да се увеличи само толкова, че да позволи да се изпълняват всички желани приложения.

Третата стойност на SharedSection (512) определя размера на свободната памет на работния плот за всеки работен плот, който е свързан с "неинтерактивната" терминална станция. Ако тази стойност не присъства, размерът на свободната памет на работния плот за неинтерактивни терминални станции (втората стойност на SharedSection).
За допълнителна информация относно параметрите на ключа SharedSection щракнете върху следния номер на статия в базата знания на Microsoft, за да я прегледате:
184802 PRB: User32.dll or Kernel32.dll fails to initialize (Неуспешно инициализиране на User32.dll или Kernel32.dll)

Това реши ли проблема?

  • Проверете дали е проблемът е решен. Ако е решен, не е необходимо да четете по-нататък в този раздел. Ако проблемът не е решен, може да се обърнете към поддръжката.
  • Ние ще сме признателни за предоставената от вас обратна информация. За да предоставите обратна информация или да съобщите за проблеми с това решение, добавете коментар в блога "Решете моя проблем" или ни изпратете имейл.

Свойства

ID на статията: 126962 - Последна рецензия: 11 септември 2011 г. - Редакция: 3.0
ВАЖИ ЗА:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows NT Workstation 3.5
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
Ключови думи: 
kbenv kbmsifixme kbfixme KB126962

Изпратете обратна информация

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com