Junior — Middle
Cum se determină durata de existență a obiectelor în memoria heap gestionată?
sobes.tech AI
Răspuns de la AI
În Go, durata de viață a obiectelor din heap-ul gestionat este determinată de durata de viață a referințelor către aceste obiecte. Dacă există referințe active (variabile, pointeri) către un obiect în heap, colectorul de gunoi (GC) consideră că obiectul este viu și nu îl elimină. Imediat ce toate referințele către obiect dispar (obiectul devine inaccesibil), GC îl marchează pentru eliminare.
Go utilizează un colector de gunoi pe trei generații cu un algoritm de urmărire a accesibilității: începând cu obiectele rădăcină (stivă, variabile globale), marchează toate obiectele accesibile, celelalte sunt considerate gunoi.
Exemplu:
func f() {
p := new(int) // obiect în heap
*p = 42
// p există, obiectul este viu
}
// după ieșirea din f(), obiectul devine inaccesibil și va fi eliminat de GC