Поделиться через


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 при полной блокирующей сборке мусора.

Атрибуты

Комментарии

LoH используется для выделения памяти для крупных объектов (например, массивов), которым требуется более 85 000 байт. Из-за влияния копирования больших блоков памяти на производительность сборщик мусора обычно выполняет очистку loH, что включает в себя создание списка расположений памяти, которые были заняты мертвыми объектами и которые можно повторно использовать для удовлетворения будущих запросов на выделение памяти для больших объектов. Однако в приложениях, которые широко используют loH для хранения временных объектов, фрагментация памяти также может отрицательно сказаться на производительности. В этом случае можно использовать LargeObjectHeapCompactionMode свойство для сжатия, а не просто очистки loH во время сборки мусора.

Значение LargeObjectHeapCompactionMode свойства по умолчанию — GCLargeObjectHeapCompactionMode.Default, которое указывает, что loH не сжимается во время сборки мусора. Если присвоить свойству значение GCLargeObjectHeapCompactionMode.CompactOnce, loH сжимается во время следующей полной блокирующей сборки мусора, а значение свойства сбрасывается на GCLargeObjectHeapCompactionMode.Default.

Примечание

Фоновые сборки мусора не блокируются. Это означает, что, если для свойства задано значение LargeObjectHeapCompactionModeGCLargeObjectHeapCompactionMode.CompactOnce, любые фоновые коллекции поколения 2, возникающие в дальнейшем, не сжимают loH. Только первая блокирующая коллекция поколения 2 сжимает LOH.

После того как свойству LargeObjectHeapCompactionMode будет присвоено значение GCLargeObjectHeapCompactionMode.CompactOnce, следующая полная блокировка сборки мусора (и сжатие LOH) происходит в неопределенное время в будущем. Вы можете сжать loH немедленно с помощью следующего кода:

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

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

См. также раздел