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

注意

背景垃圾收集不會封鎖。 這表示,如果您將 LargeObjectHeapCompactionMode 屬性設定為 GCLargeObjectHeapCompactionMode.CompactOnce ,則後續發生的任何背景第 2 代集合都不會壓縮 LOH。 只有第一個封鎖第 2 代集合會壓縮 LOH。

LargeObjectHeapCompactionMode 屬性設定為 GCLargeObjectHeapCompactionMode.CompactOnce 之後,下一個完整封鎖垃圾收集 (並壓縮 LOH) 會在不確定的未來時間發生。 您可以使用如下所示的程式碼立即壓縮 LOH:

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

適用於

另請參閱