GCSettings.LargeObjectHeapCompactionMode Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un valore che indica se un'operazione completa di Garbage Collection bloccante compatta l'heap di oggetti di grandi dimensioni (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
Valore della proprietà
Uno dei valori di enumerazione che indica se un'operazione completa di Garbage Collection bloccante compatta 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 attivi e che possono essere riutilizzate per soddisfare le richieste future di allocazione della memoria per oggetti di grandi dimensioni. Tuttavia, nelle app che usano ampiamente loH per archiviare gli oggetti temporanei, la frammentazione della memoria può influire negativamente sulle prestazioni. In questo caso, è possibile utilizzare la LargeObjectHeapCompactionMode proprietà per compattare invece di eseguire semplicemente lo spazzamento del file LOH durante un'operazione di Garbage Collection.
Il valore predefinito della LargeObjectHeapCompactionMode proprietà è GCLargeObjectHeapCompactionMode.Default, che indica che l'integrità non viene compattata durante le operazioni di Garbage Collection. Se si assegna alla proprietà un valore di GCLargeObjectHeapCompactionMode.CompactOnce, loH viene compattato durante il successivo garbage collection di blocco completo e il valore della proprietà viene reimpostato su GCLargeObjectHeapCompactionMode.Default.
Annotazioni
Le Garbage Collection in background non bloccano. Ciò significa che, se si imposta la LargeObjectHeapCompactionMode proprietà su GCLargeObjectHeapCompactionMode.CompactOnce, tutte le raccolte di generazione 2 in background che si verificano successivamente non compattano lo loH. Solo la prima raccolta di generazione 2 bloccante compatta l'elemento LOH.
Dopo che la LargeObjectHeapCompactionMode proprietà è impostata su GCLargeObjectHeapCompactionMode.CompactOnce, il successivo garbage collection di blocco completo (e la compattazione del loH) si verifica in un momento indeterminato. È possibile compattare immediatamente lo loH usando codice simile al seguente:
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()