Udostępnij za pośrednictwem


GCSettings.LargeObjectHeapCompactionMode Właściwość

Definicja

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

Dotyczy

Zobacz też