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.