Sobes.tech
Junior — Middle

Cum are loc alocarea și gestionarea memoriei atunci când se folosesc goroutines în limbajul Go?

sobes.tech AI

Răspuns de la AI

În Go, goroutine-urile sunt fire ușoare gestionate de runtime-ul Go. La crearea unei goroutine, se alocă un mic stivă de memorie (de obicei în jur de 2 KB), care poate crește și scade dinamic după nevoie. Acest lucru permite utilizarea eficientă a memoriei, deoarece stiva nu este fixă și se adaptează la sarcină.

Gestionarea memoriei se face prin planificatorul Go, care distribuie goroutine-urile pe firele de sistem. Stiva goroutine-ului este plasată pe heap, iar colectorul de gunoi eliberează automat memoria neutilizată.

Exemplu de creare a unei goroutine:

func sayHello() {
    fmt.Println("Salut din goroutine")
}

func main() {
    go sayHello() // pornește goroutine
    time.Sleep(time.Second) // așteaptă pentru ca goroutine să se execute
}

Astfel, Go ascunde dezvoltatorului detaliile gestionării memoriei goroutine-urilor, asigurând simplitate și eficiență în execuția paralelă.