Garbage collection
Da Wikipedia, l'enciclopedia libera.
Per garbage collection (letteralmente raccolta dei rifiuti, a volte abbreviato con GC) si intende una modalità automatica di gestione della memoria, mediante la quale un sistema operativo, o un compilatore e un modulo di run-time, liberano le porzioni di memoria che non dovranno più essere successivamente utilizzate dalle applicazioni. In altre parole, il garbage collector annoterà le aree di memoria che non sono più referenziate, cioè allocate da un processo attivo, e le libererà automaticamente.
Questo meccanismo porta ad un notevole cambio nello stile di programmazione dei linguaggi che lo implementano. Infatti non è più possibile richiedere esplicitamente di liberare la memoria utilizzata da un oggetto, ovvero terminare tale oggetto in modo deterministico, ma si lascia che il sistema esegua questa operazione automaticamente, nel momento in cui lo riterrà più opportuno per migliorare le prestazioni complessive (finalizzazione non deterministica).
Alcuni linguaggi di programmazione, come il java, il python e il C# (.NET), hanno un sistema di garbage collection integrato, mentre per altri linguaggi, come il C e il C++, la sua eventuale implementazione è a carico del programmatore.
Uno degli scopi principali dei meccanismi di garbage collection è quello di prevenire due categorie di errori piuttosto frequenti nei linguaggi che delegano al programmatore il compito di rilasciare la memoria inutilizzata: il rilascio erroneo di memoria ancora in uso (problema dei dangling pointer) e il mancato rilascio di memoria non più accessibile (problema del memory leak).

