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>]
static member LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
static member LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
Public Shared Property LargeObjectHeapCompactionMode As GCLargeObjectHeapCompactionMode

プロパティ値

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

属性

注釈

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

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

注意

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

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

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

適用対象

こちらもご覧ください