デスクトップ・アプリケーション・ヒープ不足エラーに対処する方法
- レジストリエディタを起動して
「 HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Control → Session Manager → SubSystems 」 とたどって キーを開きます。
- 右ウィンドウに表示される 「 Windows 」 アイコンを ダブルクリック か、ここを右クリックして、[修正]を クリックする。
- すると次のような[文字列の編集]ダイアログが表示される。
[文字列の編集]ダイアログ
デスクトップ・アプリケーション・ヒープを変更するには、ここで[値のデータ]にあるパラメータを修正する。
上の画像の赤枠は ( %SystemRoot%\system32\csrss.exe ) Win32サブシステムの起動時のパラメータが保存されている。
csrss.exe は クライアント・サーバ・ランタイム・プロセス用のモジュール。
- 「SharedSection」のパラメータ[値のデータ]でカーソルを移動し、「SharedSection」パラメータを見付ける。
- 上の画像の赤枠 ( SharedSection=1024,3072 ) は
デスクトップ・アプリケーション・ヒープの初期値を決定するのは、「SharedSection=xxx,yyy」の「yyy」の値。
ここにKbytes単位でサイズを指定する。
Windows 2000およびWindows XPでは、デフォルト設定は次のようになっている。
SharedSection=1024, 3072
いずれも、第1パラメータ(1024)はグローバル・ハンドル・テーブルなど、
すべてのデスクトップで共有されるシステム設定用領域で、これを変更する必要はないと思います。
デスクトップ・アプリケーション・ヒープのWindows NT 3.5でのデフォルト・サイズは512Kbytes、 Windows 2000/XPでのデフォルト・サイズは3Mbytes(3072Kbytes)である。
ヒープ不足を解消するには、この値を増加させるわけだが、この値がWindowsシステムに与える影響は大きいので、
くれぐれも慎重に増加させていただきたい。
通常は256Kbytesや512Kbytes単位に増加させれば問題を解消できるはずです。
(それでも問題を回避できないときは、別の道を検討すべきである)。
場合によっては、「SharedSection=」オプションに第3のパラメータが存在することがある。
SharedSection=1024, 3072, 512
この第3のパラメータ(512)は、
ノン・インタラクティブなプロセスに割り当てられるデスクトップ・ヒープのサイズである。
こちらも修正する必要はまずないと思います。
3072の部分が、対話型Desktopで割り当てられるDHサイズ。
512の部分が、非対話型サービスなどで割り当てられるDHサイズです。
UsedRateが100%に近い方を増やしてみると、良いようです。
下記が Windowsキー の内容です。
説明上何行かになっていますが実際は一行ですので注意してください。
---
%SystemRoot%\system32\csrss.exe
ObjectDirectory=\Windows
SharedSection=1024,3072,512
Windows=On
SubSystemType=Windows
ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off
MaxRequestThreads=16
---
今回は、5012,2048 に変更しました。
- 以上、設定を変更したら、レジストリエディタ を閉じて Windows を 再起動 します。
下記は Desktop Heap Monitor ツール を表示して結果です。
--- XP標準 ---
Desktop Heap Information Monitor Tool (Version 8.1.2925.0)
Copyright (c) Microsoft Corporation. All rights reserved.
-------------------------------------------------------------
Session ID: 0 Total Desktop: ( 5312 KB - 7 desktops)
WinStation\Desktop Heap Size(KB) Used Rate(%)
-------------------------------------------------------------
WinSta0\Default 3072 43.1
WinSta0\Disconnect 64 4.5
WinSta0\Winlogon 128 15.3
Service-0x0-3e7$\Default 512 30.2
Service-0x0-3e4$\Default 512 6.4
Service-0x0-3e5$\Default 512 10.0
SAWinSta\SADesktop 512 0.5
-------------------------------------------------------------
--- SharedSection=1024,5120,2048 に変更後 ---
Desktop Heap Information Monitor Tool (Version 8.1.2925.0)
Copyright (c) Microsoft Corporation. All rights reserved.
-------------------------------------------------------------
Session ID: 0 Total Desktop: ( 13504 KB - 7 desktops)
WinStation\Desktop Heap Size(KB) Used Rate(%)
-------------------------------------------------------------
WinSta0\Default 5120 10.1
WinSta0\Disconnect 64 4.5
WinSta0\Winlogon 128 15.2
Service-0x0-3e7$\Default 2048 7.9
Service-0x0-3e4$\Default 2048 1.6
Service-0x0-3e5$\Default 2048 2.0
SAWinSta\SADesktop 2048 0.1
-------------------------------------------------------------
|