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.