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
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.

最も単純な使用パターンでは、マネージオブジェクトはアンマネージメモリをコンストラクターに割り当て、Dispose または Finalize メソッドで解放します。In the simplest usage pattern, a managed object allocates unmanaged memory in the constructor and releases it in the Dispose or 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.