Gli algoritmi di raccolta di Garbage sono essenziali nella gestione della memoria nei linguaggi di programmazione, identificando e liberando automaticamente la memoria inutilizzata, impedendo perdite e ottimizzando le prestazioni.

Mark-and-Sweep Algorithm

L'algoritmo di mark-and-sweep funziona in due fasi: marcatura oggetti raggiungibili e spazzamento via quelli non contrassegnati. È semplice ed efficace ma può causare pause durante l'esecuzione, che influiscono sulle prestazioni in sistemi in tempo reale.

Conteggio di riferimento

Il conteggio di riferimento mantiene un conteggio di riferimenti a ogni oggetto. Quando il conteggio scende a zero, l'oggetto viene immediatamente trattato. Questo metodo è efficiente ma lotta con riferimenti ciclici, che possono portare a perdite di memoria.

Collezione di Garbage Generativa

La raccolta di rifiuti generazionale divide gli oggetti in generazioni basate sulla loro durata di vita. Gli oggetti più piccoli vengono raccolti più frequentemente, migliorando l'efficienza. Questo approccio è comune nelle moderne macchine virtuali come i motori Java e JavaScript.

Esempio pratico

Considerare un'applicazione web che crea e distrugge molti oggetti temporanei. L'utilizzo della collezione generazionale riduce i tempi di pausa e migliora la reattività. Al contrario, un sistema con oggetti di lunga durata potrebbe beneficiare di mark-and-sweep per una pulizia approfondita.