.NET FrameworkRaccolta dei rifiuti

introduzione

In. Netto, gli oggetti creati con new () sono allocati nell'heap gestito. Questi oggetti non sono mai esplicitamente finalizzati dal programma che li usa; invece, questo processo è controllato da .Net Garbage Collector.

Alcuni degli esempi riportati di seguito sono "casi di laboratorio" per mostrare il Garbage Collector al lavoro e alcuni dettagli significativi del suo comportamento, mentre altri si concentrano su come preparare le classi per una corretta gestione da parte di Garbage Collector.

Osservazioni

Il Garbage Collector ha lo scopo di ridurre il costo del programma in termini di memoria allocata, ma farlo ha un costo in termini di tempo di elaborazione. Per raggiungere un buon compromesso generale, ci sono alcune ottimizzazioni che dovrebbero essere prese in considerazione durante la programmazione con il Garbage Collector in mente:

  • Se il metodo Collect () deve essere invocato in modo esplicito (che comunque non dovrebbe essere il caso), si consideri l'utilizzo della modalità "ottimizzata" che finalizza l'oggetto morto solo quando la memoria è effettivamente necessaria
  • Invece di invocare il metodo Collect (), considerare l'utilizzo dei metodi AddMemoryPressure () e RemoveMemoryPressure (), che attivano una raccolta di memoria solo se effettivamente necessario
  • Una raccolta di memoria non è garantita per finalizzare tutti gli oggetti morti; invece, il Garbage Collector gestisce 3 "generazioni", un oggetto che a volte "sopravvive" da una generazione al successivo
  • Possono essere applicati diversi modelli di threading, in base a vari fattori tra cui la messa a punto dell'ottimizzazione, con conseguenti diversi gradi di interferenza tra il thread Garbage Collector e gli altri thread dell'applicazione

Raccolta dei rifiuti Esempi correlati