GC.RemoveMemoryPressure(Int64) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
アンマネージ メモリが解放され、ガベージ コレクションをスケジュールするときに考慮する必要がなくなったことをランタイムに通知します。
public:
static void RemoveMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void RemoveMemoryPressure(long bytesAllocated);
public static void RemoveMemoryPressure(long bytesAllocated);
[<System.Security.SecurityCritical>]
static member RemoveMemoryPressure : int64 -> unit
static member RemoveMemoryPressure : int64 -> unit
Public Shared Sub RemoveMemoryPressure (bytesAllocated As Long)
パラメーター
- bytesAllocated
- Int64
解放されたアンマネージ メモリの量。
- 属性
例外
注釈
ネイティブ リソースを解放するための一般的なパターンは、型のファイナライザーを使用することです。 マネージド オブジェクトがネイティブ メモリを使用している場合は、そのファイナライザーでそのネイティブ メモリを解放できます。 ガベージ コレクターはマネージド メモリについてのみ認識し、この知識に基づいてコレクションをスケジュールします。 小さなマネージド オブジェクトが大量のネイティブ メモリ使用量に関連付けられ、このマネージド オブジェクトが gen2 に存在するシナリオを想像してください。 gen2 GC はしばらく発生しない可能性があります。つまり、次の gen2 が発生するまで、大量のネイティブ メモリは解放されません。 ランタイムには、このシナリオに役立つ AddMemoryPressure メソッドと RemoveMemoryPressure メソッドが用意されています。 ランタイムは、これらの API が追加および削除したメモリ負荷の内部レコードを保持し、生産性が高いと見なされた場合に gen2 GC をトリガーします。 したがって、これは GC の機能ではなく、ランタイムが GC をトリガーするために提供する機能です。
AddMemoryPressureメソッドとRemoveMemoryPressure メソッドは、ファイナライザーのみに依存する型がアンマネージ リソースを解放する場合にのみパフォーマンスを向上させます。 破棄パターンに従う型でこれらのメソッドを使用する必要はありません。この場合、ファイナライザーは、型のコンシューマーが Disposeを呼び出すのを忘れた場合にのみ、アンマネージ リソースのクリーンアップに使用されます。 オブジェクトの最終処理と破棄パターンの詳細については、「 アンマネージ リソースのクリーンアップ」を参照してください。
最も単純な使用パターンでは、マネージド オブジェクトはコンストラクターにアンマネージ メモリを割り当て、 Finalize メソッドで解放します。 アンマネージ メモリを割り当てた後、 AddMemoryPressure メソッドを呼び出し、解放後に RemoveMemoryPressure メソッドを呼び出します。
マネージド オブジェクトの有効期間中にアンマネージ メモリの割り当てが大幅に変化する、より複雑なシナリオでは、 AddMemoryPressure メソッドと RemoveMemoryPressure メソッドを呼び出して、これらの増分変更をランタイムに伝達できます。
注意事項
追加する圧力の量を正確に削除する必要があります。 これを行わないと、長時間実行されるアプリケーションのシステムのパフォーマンスに悪影響が及ぶ可能性があります。