Sobes.tech
Junior

Cos'è il garbage collector in C#?

sobes.tech AI

Risposta dell'AI

Meccanismo automatico di gestione della memoria che libera la memoria occupata dagli oggetti a cui non ci sono più riferimenti. Questo previene perdite di memoria e semplifica il processo di sviluppo.

Principi di funzionamento del garbage collector:

  1. Monitoraggio degli oggetti: Identifica gli oggetti ancora accessibili dai nodi radice (campi statici, variabili locali nello stack).
  2. Raccolta dei rifiuti: Se un oggetto non ha riferimenti, il garbage collector lo segna per la rimozione.
  3. Liberazione della memoria: Libera la memoria occupata dagli oggetti rimossi e comprime la memoria rimanente per ridurre la frammentazione.

Generazioni di oggetti:

  • Generazione 0: Contiene oggetti creati di recente e di breve durata. La raccolta avviene frequentemente.
  • Generazione 1: Contiene oggetti sopravvissuti a una raccolta di generazione 0. La raccolta avviene meno frequentemente.
  • Generazione 2: Contiene oggetti di lunga durata. La raccolta avviene raramente.

Chiamata forzata del GC (usata raramente e con cautela):

// Chiamata forzata alla raccolta dei rifiuti
System.GC.Collect();
// Attende la finalizzazione dei finalizzatori pendenti
System.GC.WaitForPendingFinalizers();

Il meccanismo principale di raccolta dei rifiuti in .NET è l’algoritmo di marcatura e compressione.