Senior
Ako funguje garbage collector v Go?
sobes.tech AI
Odpoveď od AI
Garbage Collector (GC) v Go je spúšťač, konkurentný, označujúci a upratovací zberač odpadu s algoritmom mark-and-sweep. Funguje paralelne s hlavným vláknom, minimalizujúc prestávky v programe.
Hlavné fázy GC v Go:
- Označenie (Mark): GC prechádza všetky korene (gorutiny, zásobníky, globálne premenné) a označuje všetky dostupné objekty.
- Upratovanie (Sweep): Všetky neoznačené objekty sa považujú za odpad a uvoľňujú sa.
GC v Go je optimalizovaný pre nízku latenciu, takže zber prebieha paralelne s vykonávaním programu, čím sa skracuje čas prestávok. Navyše, GC automaticky spravuje pamäť, uvoľňujúc programátora od manuálneho riadenia.
Takto vyzerá zjednodušený cyklus GC:
// Pamäť je pridelená cez new alebo make
p := new(int)
// GC automaticky uvoľní pamäť, keď sa p stane nedostupným
V najnovších verziách bol GC v Go vylepšený na prácu s viacerými vláknami a zníženie fragmentácie pamäti.