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