GCSettings.LargeObjectHeapCompactionMode Proprietà

Definizione

Ottiene o imposta un valore che indica se un'operazione completa di Garbage Collection bloccante comprime l'heap degli oggetti grandi (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

Valore della proprietà

GCLargeObjectHeapCompactionMode

Uno dei valori di enumerazione che indica se un'operazione completa di Garbage Collection bloccante comprime l'heap degli oggetti grandi (LOH).

Attributi

Commenti

LoH viene usato per allocare memoria per oggetti di grandi dimensioni (ad esempio matrici) che richiedono più di 85.000 byte. A causa dell'impatto sulle prestazioni della copia di grandi blocchi di memoria, il Garbage Collector esegue in genere lo sweep, che comporta la creazione di un elenco delle posizioni di memoria occupate da oggetti non recapitabili e che possono essere riutilizzate per soddisfare richieste future di allocazione di memoria per oggetti di grandi dimensioni. Tuttavia, nelle app che usano ampiamente LOH per archiviare oggetti temporanei, la frammentazione della memoria può influire negativamente sulle prestazioni. In questo caso, è possibile utilizzare la LargeObjectHeapCompactionMode proprietà per compattare anziché semplicemente eseguire lo sweep del loH durante un'operazione di Garbage Collection.

Il valore predefinito della LargeObjectHeapCompactionMode proprietà è GCLargeObjectHeapCompactionMode.Default, che indica che l'oggetto LOH non viene compattato durante l'operazione di Garbage Collection. Se si assegna alla proprietà un valore pari GCLargeObjectHeapCompactionMode.CompactOncea , loH viene compattato durante il successivo garbage collection di blocco completo e il valore della proprietà viene reimpostato su GCLargeObjectHeapCompactionMode.Default.

Nota

Garbage Collection in background non blocca. Ciò significa che, se si imposta la proprietà su GCLargeObjectHeapCompactionMode.CompactOnce, tutte le LargeObjectHeapCompactionMode raccolte di generazione 2 in background che si verificano successivamente non compattano l'oggetto LOH. Solo la prima collezione di generazione 2 bloccante compatta la LOH.

Dopo che la LargeObjectHeapCompactionMode proprietà è impostata su GCLargeObjectHeapCompactionMode.CompactOnce, la successiva operazione di Garbage Collection completa di blocco (e compattazione dello LOH) viene eseguita in un momento indeterminato. È possibile compattare immediatamente il LOH usando codice simile al seguente:

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

Si applica a

Vedi anche