Sobes.tech
Junior — Middle

Ako prebieha alokácia a správa pamäte pri používaní gorutín v jazyku Go?

sobes.tech AI

Odpoveď od AI

V Go sú goroutine ľahké vlákna spravované runtime prostredím Go. Pri vytváraní goroutine sa pridelená malá zásobníková pamäť (zvyčajne okolo 2 KB), ktorá sa môže dynamicky zväčšovať a zmenšovať podľa potreby. To umožňuje efektívne využívanie pamäte, pretože zásobník nie je pevný a prispôsobuje sa záťaži.

Správa pamäte sa vykonáva prostredníctvom plánovača Go, ktorý rozdeľuje goroutine na systémové vlákna. Zásobník goroutine sa nachádza na halde a garbage collector automaticky uvoľňuje nepoužívanú pamäť.

Príklad vytvorenia goroutine:

func sayHello() {
    fmt.Println("Ahoj z goroutine")
}

func main() {
    go sayHello() // spustí goroutine
    time.Sleep(time.Second) // čaká, aby goroutine mohla dokončiť
}

Týmto spôsobom Go skrýva pred vývojármi detaily správy pamäte goroutine-ov, zabezpečuje jednoduchosť a efektívnosť paralelného vykonávania.