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.