文章編號: 126962 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

在您執行大量的 Windows 程式時,當您嘗試啟動新程式或使用正在執行的程式時,出現「記憶體不足」錯誤訊息,雖然您還有許多實體和分頁檔記憶體可供使用。

發生的原因

若 WIN32 子系統中的桌面堆積已耗盡,就可能會發生此行為。

注意 此問題較常發生在 Windows NT 3.5 中,因為桌面堆積的預設大小為 512K。Windows NT 3.1 中的預設值為 3072K。系統降低預設值以提高效能。

解決方案

重要 這個章節、方法或工作包含修改登錄的步驟。然而,如果您不當地修改登錄,可能會發生嚴重的問題。因此,請務必謹慎地依照這些步驟執行。為加強保護,修改登錄之前,請務必將其備份。那麼您便可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756 如何在 Windows XP 中備份及還原登錄
如果要我們為您修正這個問題,請前往<為我修正此問題>一節。如果您要自行修正這個問題,請前往<讓我自行修正此問題>一節。

為我修正此問題



如果要自動修正此問題,請按一下 [修正此問題] 按鈕或連結。按一下 [檔案下載] 對話方塊中的 [執行],並依照 Fix it 精靈中的步驟執行。

修正此問題
Microsoft Fix it 50496

注意事項
  • 此精靈可能只提供英文版本。不過,自動修正程式也適用於 Windows 的其他語言版本。
  • 如果您不在發生問題的電腦上,則可將 Fix it 解決方案儲存至快閃磁碟機或 CD,然後在發生問題的電腦上加以執行。
  • 如果問題仍未修正,請增加電腦的記憶體。

然後請前往<這樣是否已修正問題?>一節。



讓我自行修正此問題

若要修正此問題,請增加桌面堆積的大小:
  1. 執行 [登錄編輯程式] (Regedt32.exe)。
  2. HKEY_LOCAL_MACHINE
    樹狀子目錄,前往下列機碼:
    \System\CurrentControlSet\Control\Session Manager\SubSystems
  3. 選取 [Windows] 值。
  4. [編輯] 功能表,選擇 [字串]
  5. 增加 SharedSection 參數。

    在 Windows NT 方面:
    SharedSection 使用下列格式指定系統和桌面堆積:
    SharedSection=xxxx,yyyy
    yyyy 數字之後加上 ",256" 或 ",512"。

    在 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 程式使用特殊的記憶體堆積。桌面堆積會用於所有物件 (視窗、功能表、畫筆、圖示等)。當大量的 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) 定義所有桌面通用的堆積大小。這包括全域控制碼表格 (整個機器上的 Window 控制碼皆是唯一) 以及共用系統設定 (如 SystemMetrics)。這個值不太可能需要變更。

第二個 SharedSection 值 (3072) 控制與互動式視窗工作站 (用於 Windows 物件) 相關之桌面堆積的大小。此靜態值用來避免無法正常運作的應用程式耗用太多資源。由於桌面堆積會對應至每個程序的位址空間中,因此此值不應任意設定為很高的值 (可能會降低效能),但應適度增加,讓所需應用程式都能執行。

第三個 SharedSection 值 (512) 控制每個與「非互動式」視窗工作站相關之桌面的桌面堆積大小。若此值不存在,則非互動式視窗工作站的桌面堆積大小,會和互動式視窗工作站的指定大小相同 (即第二個 SharedSection 值)。
如需有關 SharedSection 機碼之參數的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
184802 PRB:User32.dll 或 Kernel32.dll 無法初始化

這樣是否已修正問題?

  • 檢查該問題是否已修正。如果問題已修正,您便已完成本節。如果問題尚未修正,則可連絡技術支援服務
  • 我們非常感謝您提供意見反應。如果要提供意見反應,或報告此解決方案的任何問題,請在「為我修正此問題」部落格 中留下您的意見,或者傳送電子郵件給我們。

屬性

文章編號: 126962 - 上次校閱: 2010年11月10日 - 版次: 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
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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