Middle
Čo je zberač odpadu a ako funguje?
sobes.tech AI
Odpoveď od AI
Zberač odpadu (Garbage Collector, GC) je mechanizmus automatického riadenia pamäte, ktorý prideľuje a uvoľňuje pamäť, ktorú program už nepoužíva.
Princíp fungovania:
- Pridelenie pamäte: Keď program vytvára objekty, zberač odpadu im prideľuje miesto na halde (heap).
- Určenie dostupnosti: Zberač odpadu určuje, ktoré objekty sú dostupné z "koreňov" (root) programu. Koreňe môžu byť lokálne premenné vo vykonávajúcich sa funkciách, statické premenné, odkazy z vlákien a pod.
- Zber odpadu: Objekty, ktoré nie sú dostupné z koreňov, sa považujú za "odpad" a ich pamäť môže byť uvoľnená.
Existujú rôzne algoritmy zberu odpadu, napríklad:
- Mark-and-Sweep (Označenie a čistenie): Zberač prechádza graf dostupných objektov z koreňov, označuje ich. Potom prechádza celú haldu a uvoľňuje pamäť označených objektov.
- Kopírovanie: Hald je rozdelený na dve časti. Dostupné objekty sa kopírujú z jednej časti do druhej, stará časť sa čistí.
- Generačný: Objekty sa delia na generácie. Nové objekty patria do mladej generácie, staré do zrelého. Zber odpadu sa vykonáva častejšie v mladej generácii, pretože väčšina objektov má krátku životnosť.
Príklad v Jave (zjednodušený):
// Program vytvára objekty na halde
Object obj1 = new Object();
Object obj2 = new Object();
// obj1 sa stáva nedostupným
obj1 = null;
// Zberač odpadu môže uvoľniť pamäť obsadenú obj1