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 的枚举值之一。

属性

注解

LOH 用于为大型对象分配内存 (,例如需要超过 85,000 字节的数组) 。 由于复制大型内存块的性能影响,垃圾回收器通常会扫描 LOH,这涉及到创建死对象占用的内存位置列表,并可以重复使用这些位置以满足将来为大型对象的内存分配请求。 但是,在广泛使用 LOH 来存储暂时性对象的应用中,内存碎片也会对性能产生不利影响。 在这种情况下,可以使用 LargeObjectHeapCompactionMode 该属性来压缩,而不是在垃圾回收期间简单地扫描 LOH。

属性的 LargeObjectHeapCompactionMode 默认值为 GCLargeObjectHeapCompactionMode.Default,指示在垃圾回收期间不会压缩 LOH。 如果为属性赋值 GCLargeObjectHeapCompactionMode.CompactOnce,则 LOH 在下一次完全阻止垃圾回收期间压缩,并将属性值重置为 GCLargeObjectHeapCompactionMode.Default

备注

后台垃圾回收不会阻止。 这意味着,如果将属性GCLargeObjectHeapCompactionMode.CompactOnce设置为LargeObjectHeapCompactionMode,则随后发生的任何后台第 2 代集合都不会压缩 LOH。 只有第一个阻塞第 2 代集合压缩 LOH。

属性 LargeObjectHeapCompactionMode 设置为 GCLargeObjectHeapCompactionMode.CompactOnce后,下一个完全阻止垃圾回收 (和压缩 LOH) 在不确定的未来时间发生。 可以使用如下所示的代码立即压缩 LOH:

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

适用于

另请参阅