2009-01-09 12 views

Odpowiedz

20

Tak, są. Zasadniczo GC przechodzi od "znanych źródeł" (zmiennych statycznych, zmiennych lokalnych ze wszystkich ramek stosów w wątkach alll), aby znaleźć obiekty, które nie mogą być zbędne. Jeśli nie można uzyskać dostępu do obiektu z katalogu głównego, może on zostać odebrany.

EDIT: Tom wskazał na to, co uważałem, że było warto podnoszenia do samej odpowiedzi:

Technicznie, zmienne statyczne nie są korzenie - są one odwołuje klas których odwołuje ładowarki klasy do których odwołują się klasy, do których odwołuje się obiekt, który jest oznaczony przez odwołania do katalogu głównego.

Różnica może być nieistotny najbardziej czasu, ale dobrze jest wiedzieć :)

+0

Technicznie, zmienne statyczne nie są źródłami podstawowymi - są one przywoływane przez klasy, do których odwołują się klasy ładujące, do których odwołują się klasy, do których odwołuje się obiekt, do którego odwołują się odniesienia do katalogu głównego. –

+0

@ Tom: Dobre połączenie. Redagowanie... –

4

Skeet jest na pieniądze, jak zwykle. Dodam tylko, że sytuacja, którą opisujesz, jest powodem, że liczenie odwołań (standardowa strategia z wczesnymi wskaźnikami inteligentnymi C++) nie jest używane.

Powiązane problemy