Junior — Middle
Objasnite mehanizam automatskog prikupljanja smeća u jeziku Go i kako on upravlja memorijom.
sobes.tech АИ
Одговор од АИ
U jeziku Go koristi se automatski sakupljač smeća (Garbage Collector, GC), koji upravlja memorijom oslobađajući neiskorišćene objekte.
Mehanizam se zasniva na algoritmu praćenja i brojenja dostupnosti objekata:
- Go pokreće sakupljanje smeća paralelno sa izvršavanjem programa (konkurentni GC).
- GC određuje koji objekti na hrpi više nisu dostupni iz korenskih referenci (npr. globalne promenljive, stekovi gorutina).
- Nedostupni objekti se smatraju smećem i oslobađaju.
Karakteristike:
- Go koristi trogeneraciono sakupljanje: mark (označavanje dostupnih objekata), sweep (oslobađanje nedostupnih).
- Sakupljanje smeća minimizira pauze kako ne bi blokiralo izvršenje programa.
- Upravljanje memorijom je automatsko, programer ne mora eksplicitno oslobađati memoriju.
Primer:
func main() {
s := make([]int, 1000000) // dodela memorije
// korišćenje s
s = nil // sada niz nije dostupan
// GC će osloboditi memoriju pri sledećem pokretanju
}
Na ovaj način, Go pojednostavljuje upravljanje memorijom, smanjujući verovatnoću curenja memorije i grešaka.