Junior — Middle
Ako funguje mechanizmus automatického zberu odpadkov v systéme správy pamäte?
sobes.tech AI
Odpoveď od AI
V Go je mechanizmus automatického zberača odpadkov (GC) založený na sledovacom algoritme s počítaním dostupnosti objektov. Keď program alokuje pamäť pre objekty, zberač odpadkov sa periodicky spúšťa, aby určil, ktoré objekty už nie sú dostupné z koreňových bodov (napríklad globálne premenné, zásobníky gorútín).
GC v Go pracuje paralelne s vykonávaním programu a minimalizuje prestávky. Používa tri hlavné fázy:
- Značenie — zberač označuje všetky objekty dostupné z koreňov.
- Čistenie — pamäť obsadená neoznačenými (nedostupnými) objektmi sa uvoľní.
- Kompakcia — v Go sa kompresia pamäti neaplikuje, pretože sa používa algoritmus s delením na generácie a fragmentácia je kontrolovaná inak.
Tu je zjednodušený cyklus GC:
// Príklad implicitného použitia GC
func main() {
data := make([]byte, 1024*1024) // alokuje 1MB
_ = data
// Keď sa data prestane používať, GC automaticky uvoľní pamäť
}
Takto vývojár neriadi pamäť manuálne, a GC zabezpečuje automatické uvoľnenie nepoužívaných objektov, čím znižuje pravdepodobnosť únikov pamäti.