Sommario:
Definizione - Cosa significa Garbage Collector?
Un garbage collector è un software che esegue la gestione automatica della memoria. Il suo compito è liberare qualsiasi memoria non utilizzata e garantire che nessuna memoria venga liberata mentre è ancora in uso. Alcuni linguaggi come Java e .NET presentano la garbage collection automatica, mentre altri come C / C ++ richiedono al programmatore di gestire manualmente la memoria.
Techopedia spiega Garbage Collector
La raccolta dei rifiuti è stata introdotta per la prima volta dal creatore di Lisp John McCarthy per facilitare la gestione manuale della memoria quando si lavora con il linguaggio Lisp.
Le tre tecniche principali utilizzate da un Garbage Collector per eseguire la gestione automatica della memoria sono le seguenti:
- Conteggio dei riferimenti: il riferimento a ciascun oggetto viene conteggiato utilizzando una variabile contatore. Quando il contatore raggiunge lo zero, indica che l'oggetto non è più necessario e quindi viene riciclato.
- Contrassegna e sweep: viene eseguito un attraversamento ricorsivo di tutti gli oggetti raggiungibili su tutte le aree dati e gli oggetti raggiungibili vengono contrassegnati. Gli oggetti non contrassegnati vengono quindi riciclati.
- Interrompi e copia: l'heap di memoria è diviso in due sezioni: una sezione che contiene gli oggetti e una sezione vuota in cui gli oggetti vengono trasferiti (copiati) se rilevati come contrassegnati. Gli oggetti non contrassegnati nella prima sezione vengono riciclati svuotandolo.
Quando un blocco di memoria assegnato a un puntatore / oggetto è stato liberato, il puntatore / oggetto deve essere reimpostato su un valore nullo; in caso contrario, è penzolante, ovvero indica un blocco di memoria non valido.
La garbage collection aiuta a ridurre bug e rischi per la sicurezza causati da puntatori penzolanti e problemi di perdita di memoria.
Gli svantaggi dell'utilizzo di un Garbage Collector includono l'overhead aggiuntivo in termini di risorse e prestazioni. L'esecuzione di un Garbage Collector può anche rallentare il sistema e quindi ridurne le prestazioni.