This artykuł mówiDlaczego zajęcia z finalizatorami wymagają więcej niż jednego cyklu zbierania śmieci?
Jeśli obiekt ma finalizatora, nie jest natychmiast usuwany, gdy kolektor śmieci decyduje, że nie jest już „na żywo”. Zamiast tego staje się specjalnym rodzajem korzenia, dopóki .NET nie nazwał metody finalizatora. Oznacza to, że te obiekty zwykle wymagają więcej niż jednego śmiecia kolekcji, która ma zostać usunięta z pamięci, ponieważ przeżyją one pierwszy raz, gdy zostaną uznane za nieużywane.
Moje pytanie brzmi, dlaczego GC nie wywołuje finalizatora, gdy stwierdzi, że obiekt nie może być już odsyłany i od razu zbiera obiekt? dlaczego potrzebuje czegoś więcej niż tylko garbage collection?