Sommario:
Definizione - Cosa significa Garbage Collection (GC)?
Garbage Collection (GC) è un approccio dinamico alla gestione automatica della memoria e all'allocazione dell'heap che elabora e identifica i blocchi di memoria morta e rialloca la memoria per il riutilizzo. Lo scopo principale della garbage collection è ridurre le perdite di memoria.
L'implementazione del GC richiede tre approcci primari, come segue:
- Mark-and-sweep: in fase di esaurimento della memoria, il GC individua tutta la memoria accessibile e quindi recupera la memoria disponibile.
- Conteggio dei riferimenti: gli oggetti allocati contengono un conteggio dei riferimenti del numero di riferimento. Quando il conteggio della memoria è zero, l'oggetto è immondizia e viene quindi distrutto. La memoria liberata ritorna all'heap di memoria.
- Raccolta copie: esistono due partizioni di memoria. Se la prima partizione è piena, il GC individua tutte le strutture di dati accessibili e le copia nella seconda partizione, compattando la memoria dopo il processo GC e consentendo memoria libera continua.
Alcuni linguaggi di programmazione e piattaforme con GC integrato (ad es. Java, Lisp, C # e .Net) autodistruggono perdite di memoria, consentendo una programmazione più efficiente.
Techopedia spiega Garbage Collection (GC)
L'approccio dinamico di Garbage Collection all'allocazione automatica dell'heap affronta errori comuni e costosi che spesso non rilevano difetti del programma nel mondo reale.
Poiché sono difficili da identificare e riparare, gli errori di allocazione sono costosi. Pertanto, la garbage collection è considerata da molti come una caratteristica linguistica essenziale che semplifica il lavoro del programmatore con una gestione manuale dell'allocazione dell'heap più bassa. Tuttavia, GC non è perfetto e devono essere considerati i seguenti inconvenienti:
- Quando si libera la memoria, GC consuma risorse di elaborazione.
- Il processo GC è imprevedibile, con conseguenti ritardi di sessione sparsi.
- Quando i riferimenti a oggetti non utilizzati non vengono eliminati manualmente, GC causa perdite di memoria logica.
- GC non sempre sa quando elaborare all'interno di ambienti di memoria virtuale dei moderni computer desktop.
- Il processo GC interagisce male con i sistemi di cache e memoria virtuale, con conseguenti difficoltà di ottimizzazione delle prestazioni.
