Junior — Middle
Hoe wordt de duur van het bestaan van objecten in de beheerde heap-geheugen bepaald?
sobes.tech AI
Antwoord van AI
In Go wordt de levensduur van objecten in de beheerde heap bepaald door de levensduur van de referenties naar deze objecten. Als er actieve referenties (variabelen, pointers) naar een object in de heap bestaan, beschouwt de garbage collector (GC) het object als levend en verwijdert het niet. Zodra alle referenties naar het object verdwijnen (het object wordt ontoegankelijk), markeert de GC het voor verwijdering.
Go gebruikt een drie-generatie garbage collector met een bereikbaarheid-tracking algoritme: beginnend bij de root-objecten (stack, globale variabelen), markeert het alle bereikbare objecten, de rest wordt als afval beschouwd.
Voorbeeld:
func f() {
p := new(int) // object in de heap
*p = 42
// p bestaat, het object is levend
}
// na het verlaten van f() wordt het object ontoegankelijk en verwijderd door de GC