Ваш первый пункт применим, когда деструктор / финализатор реализован внутри вашего класса.Его запись будет добавлена в очередь завершения во время инициализации объекта.Когда на этот объект больше не ссылается корень GC (например, ссылки на стек, ссылки на статические объекты, регистры ЦП ...) , кроме очереди завершения / fReachable (оба действуют как корень GC), тогда эта запись перемещаетсяв доступную очередь.Эта очередь контролируется отдельным потоком, который отвечает за вызов метода finalize этого объекта.
Следующая ссылка является окончательным справочным материалом для понимания управления памятью в среде .NET.Первые две главы (около 40 страниц) дадут вам отличное и глубокое представление о том, как работает сборка мусора в среде .NET.Больше всего это БЕСПЛАТНО электронная книга.
Под капотом .NET Memory Management Крис Фаррелл и Ник Харрисон
Прямая ссылка
Я рекомендую эту книгу всем .NET-парням, которые хотят писать эффективные программы с использованием технологии .NET.