Sobes.tech
Junior — Middle

Vysvetlite mechanizmus automatického zbera odpadu v jazyku Go a ako spravuje pamäť.

sobes.tech AI

Odpoveď od AI

V jazyku Go se používa automatický sběrač odpadu (Garbage Collector, GC), který spravuje paměť tím, že uvolňuje nepoužívané objekty.

Mechanismus je založen na algoritmu sledování a počítání dostupnosti objektů:

  • Go spouští sběr odpadu paralelně s během programu (konkurentní GC).
  • GC určuje, které objekty na haldě již nejsou dostupné z kořenových odkazů (například globálne premenné, zásobníky goroutine).
  • Nedostupné objekty jsou považované za odpad a jsou uvoľnené.

Vlastnosti:

  • Go používa trojgeneráciu zberu: mark (označenie dostupných objektov), sweep (uvoľnenie nedostupných).
  • Sběr odpadu minimalizuje prestávky, aby neblokoval beh programu.
  • Správa pamäti je automatická, programátor nemusí explicitne uvoľňovať pamäť.

Príklad:

func main() {
    s := make([]int, 1000000) // alokácia pamäti
    // použitie s
    s = nil // teraz je reťazec nedostupný
    // GC uvoľní pamäť pri ďalšom spustení
}

Týmto spôsobom Go zjednodušuje správu pamäti, znižuje pravdepodobnosť únikov pamäti a chýb.