GCSettings.LargeObjectHeapCompactionMode GCSettings.LargeObjectHeapCompactionMode GCSettings.LargeObjectHeapCompactionMode GCSettings.LargeObjectHeapCompactionMode Property


フル ブロッキング ガベージ コレクションが大きなオブジェクト ヒープ (LOH) を圧縮するかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether a full blocking garbage collection compacts the large object heap (LOH).

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


フル ブロッキング ガベージ コレクションが LOH を圧縮するかどうかを示す、列挙値の 1 つです。One of the enumeration values that indicates whether a full blocking garbage collection compacts the LOH.


LOH は、85,000 バイト以上を必要とするラージ オブジェクト (配列など) のメモリの割り当てに使用されます。The LOH is used for allocating memory for large objects (such as arrays) that require more than 85,000 bytes. パフォーマンスに影響する大きなメモリ ブロックのコピーのため、ガベージ コレクター通常スイープ、LOH では、配信不能オブジェクトによって占有されているの今後の要求を再利用できるメモリの場所のリストを作成する必要があります。ラージ オブジェクトのメモリの割り当てです。Because of the performance impact of copying large blocks of memory, the garbage collector ordinarily sweeps the LOH, which involves creating a list of the memory locations that were occupied by dead objects and that can be reused to satisfy future requests for allocation of memory for large objects. ただし、広範なことをアプリでは、LOH の使用メモリの断片化も悪影響を及ぼすパフォーマンスに影響を与える一時的なオブジェクトを格納します。However, in apps that make extensive use of the LOH to store transient objects, memory fragmentation can also adversely impact performance. ここでは、使用することは、LargeObjectHeapCompactionModeガベージ コレクション中にスイープだけではなく、LOH を圧縮するプロパティ。In this case, it is possible to use the LargeObjectHeapCompactionMode property to compact rather than simply sweep the LOH during a garbage collection.

既定値、LargeObjectHeapCompactionModeプロパティはGCLargeObjectHeapCompactionMode.Default、ガベージ コレクション中に、LOH は最適化されないことを示します。The default value of the LargeObjectHeapCompactionMode property is GCLargeObjectHeapCompactionMode.Default, which indicates that the LOH is not compacted during garbage collections. プロパティの値を割り当てる場合GCLargeObjectHeapCompactionMode.CompactOnce、LOH は、[次へ] フル ブロッキング ガベージ コレクション中に、圧縮、およびプロパティの値にリセットGCLargeObjectHeapCompactionMode.Defaultします。If you assign the property a value of GCLargeObjectHeapCompactionMode.CompactOnce, the LOH is compacted during the next full blocking garbage collection, and the property value is reset to GCLargeObjectHeapCompactionMode.Default.


バック グラウンド ガベージ コレクションがブロックされていません。Background garbage collections are not blocking. つまり、設定した場合、LargeObjectHeapCompactionModeプロパティをGCLargeObjectHeapCompactionMode.CompactOnce、その後に発生する 2 つのコレクションが LOH を圧縮しないで任意のバック グラウンド生成します。This means that, if you set the LargeObjectHeapCompactionMode property to GCLargeObjectHeapCompactionMode.CompactOnce, any background generation 2 collections that occur subsequently do not compact the LOH. のみ、最初のブロックしている世代 2 コレクションが LOH を圧縮します。Only the first blocking generation 2 collection compacts the LOH.

後に、LargeObjectHeapCompactionModeプロパティに設定されてGCLargeObjectHeapCompactionMode.CompactOnce、不確定の将来の時点で、[次へ] のフル ブロッキング ガベージ コレクション (と LOH の圧縮) が発生します。After the LargeObjectHeapCompactionMode property is set to GCLargeObjectHeapCompactionMode.CompactOnce, the next full blocking garbage collection (and compaction of the LOH) occurs at an indeterminate future time. 次のようなコードを使用してすぐに LOH を圧縮できます。You can compact the LOH immediately by using code like the following:

GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce