Junior — Middle
Jak określa się czas istnienia obiektów w zarządzanej pamięci heap?
sobes.tech AI
Odpowiedź od AI
W Go, czas życia obiektów na zarządzanym stosie (heap) jest określany przez czas życia odwołań do tych obiektów. Jeśli istnieją aktywne odwołania (zmienne, wskaźniki) do obiektu na stosie, zbieracz śmieci (GC) uznaje, że obiekt jest żywy i go nie usuwa. Gdy wszystkie odwołania do obiektu znikają (obiekt staje się niedostępny), GC oznacza go do usunięcia.
Go używa trzygeneracyjnego zbieracza śmieci z algorytmem śledzenia dostępności: zaczyna od obiektów korzeniowych (stos, zmienne globalne), oznacza wszystkie osiągalne obiekty, reszta jest uważana za śmieci.
Przykład:
func f() {
p := new(int) // obiekt na stosie
*p = 42
// p istnieje, obiekt jest żywy
}
// po wyjściu z f() obiekt staje się niedostępny i zostanie usunięty przez GC