英語で読む

次の方法で共有


GC.RemoveMemoryPressure(Int64) メソッド

定義

アンマネージ メモリが解放され、ガベージ コレクションのスケジュールにこのメモリを考慮する必要がなくなったことをランタイムに通知します。

C#
[System.Security.SecurityCritical]
public static void RemoveMemoryPressure (long bytesAllocated);
C#
public static void RemoveMemoryPressure (long bytesAllocated);

パラメーター

bytesAllocated
Int64

解放されたアンマネージ メモリの量。

属性

例外

bytesAllocated が 0 以下です。

または

32 ビット コンピューターでは、 bytesAllocatedInt32.MaxValue を超えています。

注釈

ガベージ コレクションをスケジュールするタイミングを決定する際に、ランタイムでは、割り当てられるマネージド メモリの量が考慮されます。 小さなマネージド オブジェクトが大量のアンマネージド メモリを割り当てる場合、ランタイムはマネージド メモリのみを考慮するため、ガベージ コレクションのスケジュールの緊急度を過小評価します。 メソッドは AddMemoryPressure 、システム メモリに対するこの追加の負荷をランタイムに通知し RemoveMemoryPressure 、追加の負荷が解放されたことをランタイムに通知します。

メソッドと RemoveMemoryPressure メソッドはAddMemoryPressure、アンマネージド リソースを解放するためにファイナライザーのみに依存する型に対してのみパフォーマンスを向上させます。 破棄パターンに従う型でこれらのメソッドを使用する必要はありません。ファイナライザーを使用してアンマネージ リソースをクリーンするのは、型のコンシューマーが を呼び出Disposeすのを忘れた場合のみです。 オブジェクトの最終処理と破棄パターンの詳細については、「 アンマネージ リソースのクリーンアップ」を参照してください。

最も単純な使用パターンでは、マネージド オブジェクトによってコンストラクターにアンマネージ メモリが割り当てられ、 メソッドで解放されます Finalize 。 アンマネージド メモリを AddMemoryPressure 割り当てた後に メソッドを呼び出し、解放後に RemoveMemoryPressure メソッドを呼び出します。

マネージド オブジェクトの有効期間中にアンマネージド メモリの割り当てが大幅に変更される、より複雑なシナリオでは、 メソッドと RemoveMemoryPressure メソッドをAddMemoryPressure呼び出して、これらの増分変更をランタイムに伝達できます。

注意事項

追加する圧力の量を正確に削除する必要があります。 これを行わないと、長時間実行されるアプリケーションのシステムのパフォーマンスに悪影響を及ぼす可能性があります。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0