Я читаю книгу Джеффри Рихтера «CLR через C#». Это цитата оттуда:Почему сборщик мусора обрабатывает завершаемые объекты отдельно?
методы Finalize называются по завершении сборки мусора на объектах, что GC определила как мусор. Это означает, что память для этих объектов не может быть немедленно восстановлена , потому что метод Finalize может выполнять код, который обращается к полю. Поскольку финализируемый объект должен выжить сбор, он продвинут к другому поколению, заставляя объект жить гораздо дольше, чем это необходимо
Он ввел в заблуждении меня немного. Почему не может быть исправлен окончательный объект? Я не могу понять аргумент, что метод finalize может выполнять код, который обращается к полю. Что проблема? Более того, я не могу понять, почему конечный объект должен быть перенесен в старшее поколение и храниться в отдельной очереди (для обработки в другом потоке финализатора).
На мой взгляд, самый простой способ - завершить объект перед удалением вообще без этих дополнительных действий.