GCSettings.LargeObjectHeapCompactionMode プロパティ

定義

フル ブロッキング ガベージ コレクションが大きなオブジェクト ヒープ (LOH) を圧縮するかどうかを示す値を取得または設定します。

public:
 static property System::Runtime::GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { System::Runtime::GCLargeObjectHeapCompactionMode get(); void set(System::Runtime::GCLargeObjectHeapCompactionMode value); };
public static System.Runtime.GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { get; [System.Security.SecurityCritical] set; }
public static System.Runtime.GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { get; set; }
[<set: System.Security.SecurityCritical>]
member this.LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
member this.LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
Public Shared Property LargeObjectHeapCompactionMode As GCLargeObjectHeapCompactionMode

プロパティ値

GCLargeObjectHeapCompactionMode

フル ブロッキング ガベージ コレクションが LOH を圧縮するかどうかを示す、列挙値の 1 つです。

属性

注釈

LOH は、85,000 バイトを超えるサイズのオブジェクト (配列など) にメモリを割り当てる場合に使用されます。 大きなメモリ ブロックをコピーするとパフォーマンスが低下するため、通常、ガベージ コレクターは LOH をスイープします。これには、配信不能オブジェクトによって占有されていたメモリの場所の一覧が作成され、大規模なオブジェクトに対するメモリの割り当てに関する今後の要求を満たすために再利用できます。 ただし、LOH を広範に使用して一時的なオブジェクトを格納するアプリでは、メモリの断片化もパフォーマンスに悪影響を与える可能性があります。 この場合、ガベージ コレクション中に単に LOH を LargeObjectHeapCompactionMode スイープするのではなく、プロパティを使用してコンパクト化できます。

プロパティの LargeObjectHeapCompactionMode 既定値は、 GCLargeObjectHeapCompactionMode.Defaultガベージ コレクション中に LOH が圧縮されていないことを示します。 プロパティに値を割り当てると、次の GCLargeObjectHeapCompactionMode.CompactOnce完全ブロック ガベージ コレクション中に LOH が圧縮され、プロパティ値がにリセット GCLargeObjectHeapCompactionMode.Defaultされます。

注意

バックグラウンド ガベージ コレクションがブロックされていません。 つまり、プロパティをLargeObjectHeapCompactionModeGCLargeObjectHeapCompactionMode.CompactOnce設定した場合、後で発生する任意のバックグラウンドジェネレーション 2 コレクションでは、LOH は圧縮されません。 LOH を圧縮するのは、第 1 ブロック第 2 世代コレクションだけです。

プロパティが LargeObjectHeapCompactionMode 設定 GCLargeObjectHeapCompactionMode.CompactOnceされると、次の完全なブロッキング ガベージ コレクション (および LOH の圧縮) は、不確定な将来に発生します。 次のようなコードを使用して、LOH をすぐに圧縮できます。

GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()

適用対象

こちらもご覧ください