GC.AddMemoryPressure(Int64) メソッド


アンマネージ メモリが大規模に割り当てられたため、ガベージ コレクションをスケジュールするときに考慮する必要があることが、ランタイムに通知されます。Informs the runtime of a large allocation of unmanaged memory that should be taken into account when scheduling garbage collection.

 static void AddMemoryPressure(long bytesAllocated);
public static void AddMemoryPressure (long bytesAllocated);
public static void AddMemoryPressure (long bytesAllocated);
static member AddMemoryPressure : int64 -> unit
static member AddMemoryPressure : int64 -> unit
Public Shared Sub AddMemoryPressure (bytesAllocated As Long)



割り当てられたアンマネージ メモリの増加量。The incremental amount of unmanaged memory that has been allocated.



bytesAllocated が 0 以下です。bytesAllocated is less than or equal to 0.

または-or- 32 ビットのコンピューターで、bytesAllocated の値が MaxValue の値を超えています。On a 32-bit computer, bytesAllocated is larger than MaxValue.


ガベージコレクションをスケジュールするタイミングを決定するときに、ランタイムは、割り当てられているマネージメモリの量を考慮します。In determining when to schedule garbage collection, the runtime takes into account how much managed memory is allocated. 小さいマネージオブジェクトによって大量のアンマネージメモリが割り当てられている場合、ランタイムはマネージメモリだけを考慮して、ガベージコレクションのスケジュールの緊急度を過小評価します。If a small managed object allocates a large amount of unmanaged memory, the runtime takes into account only the managed memory, and thus underestimates the urgency of scheduling garbage collection. メソッドは、 AddMemoryPressure システムメモリに対するこの追加の負荷をランタイムに通知します。The AddMemoryPressure method informs the runtime of this additional pressure on system memory.

AddMemoryPressureメソッドと RemoveMemoryPressure メソッドは、ファイナライザーに依存し、アンマネージリソースを解放する型に対してのみパフォーマンスを向上させます。The AddMemoryPressure and RemoveMemoryPressure methods improve performance only for types that exclusively depend on finalizers to release the unmanaged resources. Dispose パターンに従う型では、これらのメソッドを使用する必要はありません。この場合、ファイナライザーは、型のコンシューマーが呼び出しを忘れたイベントでのみアンマネージリソースをクリーンアップするために使用され Dispose ます。It's not necessary to use these methods in types that follow the dispose pattern, where finalizers are used to clean up unmanaged resources only in the event that a consumer of the type forgets to call Dispose. オブジェクトの終了と dispose パターンの詳細については、「 アンマネージリソースのクリーンアップ」を参照してください。For more information on object finalization and the dispose pattern, see Cleaning Up Unmanaged Resources.

最も単純な使用パターンでは、マネージオブジェクトによってアンマネージメモリがコンストラクターに割り当てられ、メソッドで解放され Finalize ます。In the simplest usage pattern, a managed object allocates unmanaged memory in the constructor and releases it in the Finalize method. AddMemoryPressureアンマネージメモリを割り当てた後にメソッドを呼び出し、 RemoveMemoryPressure メソッドを解放した後に呼び出します。Call the AddMemoryPressure method after allocating the unmanaged memory, and call the RemoveMemoryPressure method after releasing it.

マネージオブジェクトの有効期間中にアンマネージメモリの割り当てが大幅に変化するより複雑なシナリオでは、 AddMemoryPressure メソッドとメソッドを呼び出して、 RemoveMemoryPressure これらの増分変更をランタイムに伝達できます。In more complicated scenarios, where the unmanaged memory allocation changes substantially during the lifetime of the managed object, you can call the AddMemoryPressure and RemoveMemoryPressure methods to communicate these incremental changes to the runtime.


追加する圧力の量を正確に取り除く必要があります。You must ensure that you remove exactly the amount of pressure you add. この操作を行わないと、長時間にわたって実行されるアプリケーションのシステムのパフォーマンスに悪影響を及ぼす可能性があります。Failing to do so can adversely affect the performance of the system in applications that run for long periods of time.