Sobes.tech
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