Как я понимаю, сборщик мусора в С# поместит все объекты класса в очередь финализации, как только я реализую деструктор класса. Когда я читал документацию для GC.Suppresfinalize, он упоминает, что заголовок объекта уже имеет бит для завершения завершения вызова.
Мне интересно, почему разработчикам GC пришлось поставить все объекты в очередь и задержать освобождение памяти на 1-2 цикла. Не могли ли они просто взглянуть на флаг бита при освобождении памяти, затем вызвать финализацию объекта и затем освободить память?
Без сомнения, я идиот, и я не могу понять работу GC. Я задаю этот вопрос только для того, чтобы улучшить свое понимание или заполнить недостающий пробел в моих знаниях.
EDIT: если флаг бит для suppressfinalize, разработчики GC могли бы добавить в этот заголовок объект еще один флаг, no?