La Garbage Collection è il processo di recupero della memoria di runtime allocata ma inutilizzata che viene attuato mediante la distruzione degli oggetti inutilizzati.
In linguaggi come C e C++, è il programmatore a essere responsabile sia per la creazione che la distruzione degli oggetti. Se il programmatore dimentica di eliminare oggetti obsoleti, la memoria allocata per accoglierli non viene liberata. La memoria utilizzata continua a crescere fino a quando non rimane più memoria da allocare e le applicazioni soffrono di “memory leak”, ovvero di perdite di memoria.
Superata una certa soglia quindi non rimane più memoria libera in quantità sufficiente per la creazione di nuovi oggetti e l’intero programma termina in modo anomalo.
Si possono utilizzare metodi come free() in C e delete() in C++ per eseguire esplicitamente la Garbage Collection.
In Java, la garbage collection avviene in modo automatico durante il ciclo di vita di un programma. Questa caratteristica elimina la necessità di de-allocare memoria e di conseguenza protegge dalle memory leak.
La Java Garbage Collection è il processo attraverso il quale Java esegue la gestione automatica della memoria.
In poche parole, garbage collector individua gli oggetti obsoleti non più utilizzati per poi eliminarli liberando memoria.