Umożliwia powiedzieć, że przedmioty mają 2 - przedmiot A i B. odnośników Object OBIEKTU odniesienia B i przedmiot B obiektu A.śmieci zbiór okrągły obiekt odwołanie
- jeżeli obie Object & obiektu B są z refowanie kodu - jak Garbage collector wie, że można go zebrać.
- W jaki sposób Garbage Collector może wydedukować, że jakikolwiek obiekt jest poza zakresem/gotowy do usuwania śmieci?
- Co jeśli obiekt A nie jest refowany przez nasz kod, ale nadal może być niezależny. Na przykład. jeśli jest klasą Form, wówczas może działać samodzielnie, nawet jeśli Obiekt A zostanie ponownie zainicjowany na nową instancję lub podana wartość null.
Powinieneś przeczytać: http://msdn.microsoft.com/en-us/library/ee787088.aspx Odpowiada na twoje pytania i więcej. (Z grubsza: GC ma listę rzeczy, które wie, są żywe (odwołania statyczne, zmienne stosu itp.), Które są "korzeniami" .Dowolny inny obiekt, do którego można dotrzeć poprzez odwołanie do odwołań zaczynających się od tych korzeni, również jest uważany za żywy. obiekt, który * nie może * jest uważany za kwalifikujący się do gromadzenia.) – dlev
Edytowałem twój tytuł. Zobacz, "[Czy w tytułach pytania powinny znaleźć się" znaczniki "?] (Http://meta.stackexchange.com/questions/19190/)", gdzie konsensus brzmi "nie, nie powinien". –
Jeśli interesuje Cię ten rodzaj rzeczy, absolutną najlepszą książką (IMO) jest [CLR Via C#] (http://www.amazon.co.uk/CLR-Via-Edition-Developer-Reference/dp/0735667454/ref = dp_ob_title_bk) (który znajduje się w czwartym wydaniu i zawiera nowo zaktualizowaną sekcję o narzędziu do zbierania śmieci). Nie mogę tego wystarczająco polecić. Naprawdę świetnie sprawdza się to, co dzieje się w CLR. –