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

  1. Značenie — zberač označuje všetky objekty dostupné z koreňov.
  2. Čistenie — pamäť obsadená neoznačenými (nedostupnými) objektmi sa uvoľní.
  3. 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.