デスクトップ・アプリケーション・ヒープ不足エラーに対処する方法

  1. レジストリエディタを起動して

    「 HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Control → Session Manager → SubSystems 」
    とたどって キーを開きます。


  2. 右ウィンドウに表示される 「 Windows 」 アイコンを ダブルクリック か、ここを右クリックして、[修正]を クリックする。

  3. すると次のような[文字列の編集]ダイアログが表示される。
    [文字列の編集]ダイアログ
    デスクトップ・アプリケーション・ヒープを変更するには、ここで[値のデータ]にあるパラメータを修正する。


    上の画像の赤枠は ( %SystemRoot%\system32\csrss.exe ) Win32サブシステムの起動時のパラメータが保存されている。
    csrss.exe は クライアント・サーバ・ランタイム・プロセス用のモジュール。

  4. 「SharedSection」のパラメータ[値のデータ]でカーソルを移動し、「SharedSection」パラメータを見付ける。


  5. 上の画像の赤枠 ( 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 に変更しました。

  6. 以上、設定を変更したら、レジストリエディタ を閉じて 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
  -------------------------------------------------------------

この Web サイトに関する質問やコメントについては、  こちらのページからお送りください。

ホームページへ戻る
Author: Misumi Norihiro