Help and Support

文書番号: 126962 - 最終更新日: 2004年9月6日 - リビジョン: 4.1

デスクトップ アプリケーションのヒープを増やす

この記事は、以前は次の ID で公開されていました: JP126962

すべて展開する | すべて折りたたむ

現象

重要 : この資料には、レジストリの編集に関する情報が含まれています。レジストリを編集する前に、問題が発生した場合に備えて、レジストリの復元方法を理解しておいてください。復元方法の詳細については、Regedit.exe のヘルプ トピック「レジストリを復元する」、またはRegedt32.exe のヘルプ トピック「レジストリ キーを復元する」を参照してください。


Windows ベースのプログラムを多数実行していると、新しいプログラムを起動するときや、既に起動しているプログラムを使用するときに、利用できる物理メモリとページファイル メモリがたくさんあるにもかかわらず、"メモリ不足" を通知するエラー メッセージが表示されます。

原因

これは、WIN32 サブシステムのデスクトップ ヒープを使い果たしている場合に発生します。

この問題は、Windows NT 3.5 で頻繁に発生します。これは、デスクトップ ヒープのデフォルトのサイズが 512K になっているからです。Windows NT 3.1 のデフォルト値は 3072K でしたが、パフォーマンスを向上させるために変更されています。

解決方法

警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要です。Microsoft は、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。

レジストリの編集方法については、レジストリ エディタ (Regedit.exe) のヘルプ トピック「キーと値の変更」または Regedt32.exe のヘルプ トピック「レジストリ情報の追加と削除」および「レジストリ情報の編集」を参照してください。レジストリを編集する際には、事前に必ずバックアップを作成してください。Windows NT を実行している場合、システム修復ディスク (ERD) を更新する必要もあります。
この問題を解決するには、デスクトップ ヒープのサイズを大きくします。

  1. レジストリ エディタ (REGEDT32.EXE) を実行します。
  2. HKEY_LOCAL_MACHINE サブツリーから次のキーに移動します。\System\CurrentControlSet\Control\Session Manager\SubSystems
  3. [Windows] の値を選択します。
  4. [編集] メニューで [文字列] を選択します。
  5. SharedSection パラメータの値を増やします。

    SharedSection では、次の形式でシステムとデスクトップのヒープを指定します。
    SharedSection=xxxx,yyyy
    xxxx は、システム全体のヒープの最大サイズ (キロバイト単位) を定義します。また、yyyy は、デスクトップ ヒープごとのサイズを定義します。Windows NT 3.5 (512K) でのデスクトップ ヒープのデフォルト値では、約 2,500 個のウィンドウをサポートできます。通常は、デスクトップ ヒープを 256k または 512K ずつ増やせば、"メモリ不足" のエラー メッセージを解決するのに十分なメモリを用意できるのが普通です。

詳細

Windows NT は、デスクトップで実行されているすべての Windows ベースのプログラムについて、特別なメモリ ヒープを使用します。デスクトップ ヒープは、すべてのオブジェクト (ウィンドウ、メニュー、ペン、アイコンなど) に対して使用されます。Windows ベースのプログラムが多数実行されている場合は、このヒープがメモリを使い果たすことがあります。メモリ不足のために割り当て要求を満たすことができない場合は、通常、システムがエラーを返し、メモリが残り少なくなったユーザーにその旨通知します。一部のプログラムでは、この失敗を正常に処理することができません。したがって、エラー メッセージのダイアログ ボックスを作成するメモリも足りなくなることがあります。この結果、要求された処理は、何の通知もないまま失敗します。

SharedSection キーをレジストリ エディタを使用して表示すると、長い文字列が表示されます。このキーのデフォルト値は次のとおりです。

   %SystemRoot%\system32\csrss.exe
   ObjectDirectory=\Windows
   SharedSection=1024,3072
   Windows=On
   SubSystemType=Windows
   ServerDll=basesrv,1
   ServerDll=winsrv:GdiServerDllInitialization,4
   ServerDll=winsrv:UserServerDllInitialization,3
   ServerDll=winsrv:ConServerDllInitialization,2
   ProfileControl=Off
   MaxRequestThreads=16


1 つ目の SharedSection 値 (1024) では、すべてのデスクトップに共通のヒープ サイズが定義されます。これは、グローバル ハンドル テーブル (Windows ハンドルはマシン全体で一意) や共有されるシステム設定 (SystemMetrics など) に使用されます。この値を変更する必要はほとんどありません。

2 つ目の SharedSection 値 (3072) は、(Windows オブジェクトに使用される) デスクトップ ヒープのサイズを制御します。この静的な値は、動作不良のアプリケーションによって大量のメモリが消費されるのを避けるために使用されます。デスクトップ ヒープは、各プロセスのアドレス空間にマップされるので、安易に高い値を設定するべきでありません (パフォーマンス低下の原因になります)。ただし、すべてのプログラムを実行するために十分な程度にだけは大きくしてください。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 126962? (http://support.microsoft.com/kb/126962/EN-US/ ) (最終更新日 2000-01-18) をもとに作成したものです。


この資料は以下の製品について記述したものです。
  • 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.5
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
キーワード:?
kbhowto kbenv ntconfig KB126962
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

サポート技術情報の翻訳

 

Related Support Centers