メモリ圧迫の追加および削除のアプリケーション サンプル
更新 : 2007 年 11 月
このサンプルでは、マネージ ガベージ コレクションとアンマネージ コードとの相互運用の例を示します。
このサンプルの使用については、次のトピックを参照してください。
コマンド プロンプトを使用してサンプルをビルドするには
コマンド プロンプト ウィンドウを開き、GCDemo ディレクトリの使用言語に対応するサブディレクトリに移動します。必要な設定および SDK のコマンド プロンプトについては、「方法 : サンプルの設定を設定する」を参照してください。
使用するプログラミング言語に応じて、コマンド ラインで「msbuild GCDemoCS.sln」または「msbuild GCDemoVB.sln」と入力します。
Visual Studio を使用してサンプルをビルドするには
Windows エクスプローラを開き、GCDemo ディレクトリの使用言語に対応するサブディレクトリに移動します。
使用するプログラミング言語に応じて GCDemoCS.sln ファイルまたは GCDemoVB.sln ファイルをダブルクリックして、そのファイルを Visual Studio で開きます。
[ビルド] メニューの [ソリューションのビルド] をクリックします。
サンプルを実行するには
- コマンド プロンプト ウィンドウを開き、新しい実行可能ファイルが格納されているディレクトリに移動します。
必要条件
これらのサンプルには、Windows ヘッダーが必要です。プロジェクトで Windows ヘッダーを参照できるようにするには、Microsoft Visual Studio 2005 の [Visual Studio 2005 コマンド プロンプト] を使用してビルドするか、プラットフォーム SDK をインストールしてインクルード パスに指定します。
解説
このサンプルでは、GC クラスの新しいメソッド AddMemoryPressure および RemoveMemoryPressure を示します。これらのメソッドを使用して、ジェネレーション ゼロのコレクションのガベージ コレクション方式のパターンを変更できます。これを使用して、割り当てられているアンマネージ リソース数が同じリソースのマネージ フットプリントより極端に多くなった場合に、ガベージ コレクタ (GC: Garbage Collector) にヒントを与える必要があります。このヒントがないと、GC はアンマネージ メモリを認識せず、別のコレクション方式を選択することがあります。
このサンプルを実行し、メモリ圧迫がある場合とない場合とで割り当てに成功した回数を確認します (割り当ては適切な圧迫を追加した方が成功します)。また、実行されたジェネレーション ゼロのコレクションの回数に対してメモリ圧迫を追加した場合の効果を確認し、圧迫が追加されると GC はより多くのコレクションを実行することを確認します。
圧迫を追加したら、同量の圧迫を削除してください。