Middle
Ce este un colector de gunoi și cum funcționează?
sobes.tech AI
Răspuns de la AI
Colectorul de gunoi (Garbage Collector, GC) este un mecanism de gestionare automată a memoriei, care alocă și eliberează memoria care nu mai este utilizată de program.
Principiul de funcționare:
- Alocarea memoriei: Când un program creează obiecte, colectorul de gunoi le alocă spațiu în heap.
- Determinarea accesibilității: Colectorul de gunoi determină care obiecte sunt accesibile din "rădăcini" (root) ale programului. Rădăcinile pot fi variabile locale în funcții în execuție, variabile statice, referințe din fire de execuție etc.
- Colectarea gunoiului: Obiectele inaccesibile din rădăcini sunt considerate "gunoi" și memoria lor poate fi eliberată.
Există diferite algoritmi de colectare a gunoiului, de exemplu:
- Marcare și ștergere (Mark-and-Sweep): Colectorul parcurge graful obiectelor accesibile din rădăcini, marcându-le. Apoi parcurge întregul heap și eliberează memoria obiectelor marcate.
- Copiere: Heap-ul este împărțit în două părți. Obiectele accesibile sunt copiate dintr-o parte în alta, iar partea veche este curățată.
- Generațional: Obiectele sunt împărțite în generații. Obiectele noi intră în generația tânără, cele vechi în cea matură. Colectarea gunoiului are loc mai frecvent în generația tânără, deoarece majoritatea obiectelor au o durată de viață scurtă.
Exemplu de funcționare în Java (simplificat):
// Programul creează obiecte în heap
Object obj1 = new Object();
Object obj2 = new Object();
// obj1 devine inaccesibil
obj1 = null;
// Colectorul de gunoi poate elibera memoria ocupată de obj1