Sobes.tech
Junior

Cos'è un raccoglitore di spazzatura (Garbage Collector)?

sobes.tech AI

Risposta dell'AI

Meccanismo automatico di gestione della memoria che libera gli oggetti non utilizzati nell'heap.

Principi di funzionamento:

  • Determinazione dell'accessibilità degli oggetti: Monitora gli oggetti a cui fanno riferimento gli oggetti vivi (accessibili) dalle radici (ad esempio, lo stack dei thread).
  • Rilascio degli oggetti inaccessibili: Gli oggetti a cui non ci sono riferimenti sono considerati "rifiuti" e la loro memoria può essere riutilizzata.

Tipi di raccoglitori di rifiuti (dipendono dal linguaggio/piattaforma):

  • Mark and Sweep: Marca gli oggetti raggiungibili (marcatura), poi attraversa l'heap e libera quelli non marcati (pulizia). Può causare frammentazione della memoria.
  • Copying: Divide l'heap in due parti. Copia gli oggetti vivi nella nuova parte, poi pulisce quella vecchia. Previene la frammentazione, ma richiede più memoria.
  • Generazionale: Divide gli oggetti per età in generazioni. Raccoglie i rifiuti più frequentemente nella "generazione giovane", dove la maggior parte degli oggetti non vive a lungo.

Vantaggi:

  • Riduzione della probabilità di perdite di memoria.
  • Semplificazione dello sviluppo (non è necessario liberare esplicitamente la memoria).

Svantaggi:

  • Può causare ritardi (pause) nell'esecuzione del programma durante la raccolta.
  • Tempo di raccolta imprevedibile.