GC.RemoveMemoryPressure(Int64) メソッド


アンマネージ メモリが解放され、ガベージ コレクションのスケジュールにこのメモリを考慮する必要がなくなったことをランタイムに通知します。Informs the runtime that unmanaged memory has been released and no longer needs to be taken into account when scheduling garbage collection.

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



解放されたアンマネージ メモリの量。The amount of unmanaged memory that has been released.



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 システムメモリに対するこの追加の負荷をランタイムに通知し RemoveMemoryPressure ます。メソッドは、追加の負荷が解放されたことをランタイムに通知します。The AddMemoryPressure method informs the runtime of this additional pressure on system memory, and the RemoveMemoryPressure method informs the runtime that the additional pressure has been released.

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.