Почему? GC помещает объекты в очередь финализации?

Как я понимаю, сборщик мусора в C # помещает все объекты класса в очередь финализации, как только я реализую деструктор класса. Когда я читал документацию по GC.Suppresfinalize, в нем упоминается, что в заголовке объекта уже установлен бит для вызова finalize.

Мне интересно, почему разработчикам GC пришлось поместить все объекты в очередь и задержать освобождение памяти на 1-2 цикла. Разве они не могли просто взглянуть на битовый флаг при освобождении памяти, затем вызвать finalize объекта и затем освободить память?

Несомненно, я идиот и не понимаю, как работает сборщик мусора. Я задаю этот вопрос только для того, чтобы улучшить свое понимание или заполнить недостающий пробел в моих знаниях

РЕДАКТИРОВАТЬ: Если битовый флаг предназначен для suppressfinalize, разработчики сборщика мусора могли бы добавить для этой цели еще один флаг в заголовок объекта, нет?

10
задан Pragmateek 7 October 2013 в 14:50
поделиться