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).

public:
 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 полная блокирующая сборка мусора.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.DefaultIf 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.

После того как GCLargeObjectHeapCompactionMode.CompactOnceсвойствоимеетзначение, следующая полная блокировка сборки мусора (и сжатие LOH) происходит в неопределенное время в будущем. LargeObjectHeapCompactionModeAfter 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;
GC.Collect();      
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()      

Применяется к

Дополнительно