GCSettings.LargeObjectHeapCompactionMode Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia wartość wskazującą, czy pełne blokowanie odzyskiwania pamięci kompakuje duży stertę obiektów (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
Wartość właściwości
Jedna z wartości wyliczenia wskazująca, czy pełne blokowanie odzyskiwania pamięci kompaktuje LOH.
- Atrybuty
Uwagi
LOH służy do przydzielania pamięci dla dużych obiektów (takich jak tablice), które wymagają więcej niż 85 000 bajtów. Ze względu na wpływ na wydajność kopiowania dużych bloków pamięci moduł odśmiecania pamięci zwykle zamiata LOH, co obejmuje utworzenie listy lokalizacji pamięci, które zostały zajęte przez martwe obiekty i które mogą zostać ponownie użyte do zaspokojenia przyszłych żądań alokacji pamięci dla dużych obiektów. Jednak w aplikacjach, które intensywnie wykorzystują obiekt LOH do przechowywania przejściowych obiektów, fragmentacja pamięci może również mieć negatywny wpływ na wydajność. W tym przypadku można użyć LargeObjectHeapCompactionMode właściwości do kompaktowania, a nie po prostu zamiatać LOH podczas odzyskiwania pamięci.
Wartość LargeObjectHeapCompactionMode domyślna właściwości to GCLargeObjectHeapCompactionMode.Default, która wskazuje, że LOH nie jest kompaktowana podczas odzyskiwania pamięci. W przypadku przypisania właściwości wartość GCLargeObjectHeapCompactionMode.CompactOnceLOH jest kompaktowana podczas następnego pełnego blokowania odzyskiwania pamięci, a wartość właściwości zostanie zresetowana do GCLargeObjectHeapCompactionMode.Default.
Uwaga
Odzyskiwanie pamięci w tle nie blokuje się. Oznacza to, że w przypadku ustawienia LargeObjectHeapCompactionMode właściwości na GCLargeObjectHeapCompactionMode.CompactOncewartość , wszystkie kolekcje generacji 2 w tle, które występują później, nie kompaktują LOH. Tylko pierwsza blokująca kolekcja 2. generacji kompaktuje LOH.
Po ustawieniu LargeObjectHeapCompactionMode właściwości na GCLargeObjectHeapCompactionMode.CompactOncewartość , następny pełny blokujący odzyskiwanie pamięci (i kompaktowanie LOH) występuje w nieokreślonym czasie w przyszłości. LOH można natychmiast skompaktować przy użyciu kodu, takiego jak:
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()