Sobes.tech
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:

  1. Označenie (Mark): GC prechádza všetky korene (gorutiny, zásobníky, globálne premenné) a označuje všetky dostupné objekty.
  2. 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.