Junior — Middle
Welke soorten geheugen bestaan er en hoe werken ze samen?
sobes.tech AI
Antwoord van AI
In Go (Golang) zijn de belangrijkste typen geheugen en hun interactie als volgt:
-
Stack (Stapel) — slaat lokale variabelen van functies op. De stack wordt snel toegewezen en vrijgegeven bij het aanroepen en terugkeren uit functies.
-
Heap (Heap) — wordt gebruikt voor dynamische geheugenallocatie, bijvoorbeeld voor objecten die langer leven dan de huidige functie. Go heeft een garbage collector die het opruimen van de heap beheert.
-
Globaal/statisch geheugen — voor globale variabelen en constanten.
Interactie:
- Bij het aanroepen van een functie worden lokale variabelen op de stack geplaatst.
- Als een variabele langer moet leven, kan de compiler deze "verplaatsen" naar de heap (escape analysis).
- De garbage collector vrijwaart automatisch geheugen op de heap wanneer objecten ontoegankelijk worden.
Voorbeeld:
func foo() *int {
x := 10
return &x // x "vlucht" naar de heap, omdat er een pointer wordt geretourneerd
}
Hier wordt de variabele x op de heap geplaatst zodat de pointer geldig blijft na het verlaten van de functie.