Sobes.tech
Junior — Middle

Come viene effettuata la raccolta automatica dei rifiuti nei linguaggi di programmazione gestiti?

sobes.tech AI

Risposta dell'AI

La raccolta automatica dei rifiuti (Garbage Collection, GC) nei linguaggi gestiti come C# viene implementata tramite un meccanismo speciale che traccia gli oggetti in memoria e libera quelli a cui non ci sono più riferimenti.

Principi fondamentali del GC:

  • Monitoraggio dei riferimenti: Il GC determina quali oggetti sono raggiungibili dai riferimenti radice (ad esempio, variabili locali, campi statici).
  • Identificazione degli oggetti inaccessibili: Gli oggetti senza riferimenti sono considerati rifiuti.
  • Liberazione della memoria: Il GC libera la memoria occupata dagli oggetti inaccessibili.
  • Generazioni: Per ottimizzare la raccolta dei rifiuti, essa è divisa in generazioni (Gen 0, Gen 1, Gen 2), permettendo di raccogliere più frequentemente gli oggetti giovani e meno spesso quelli di lunga durata.

Esempio in C#:

class Program
{
    static void Main()
    {
        var obj = new object();
        // utilizzo di obj
        obj = null; // l’oggetto diventa inaccessibile
        GC.Collect(); // esecuzione forzata del garbage collector (raro nelle applicazioni reali)
    }
}

In questo modo, il programmatore si libera dalla gestione manuale della memoria, riducendo gli errori legati alle perdite di memoria.