Карточка Middle GC, IDisposable и производительность обновлено

Корни сборщика мусора

Вопрос

Что считается корнями GC?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

- Локальные переменные и параметры активных методов (стек и регистры). - Статические поля. - GC handles: закреплённые (fixed, GCHandle.Alloc), сильные дескрипторы. - Очередь финализации (объекты, ожидающие финализатор). Всё, что достижимо от корней, живо, остальное мусор.

Ответ

  • Локальные переменные и параметры активных методов (стек и регистры).
  • Статические поля.
  • GC handles: закреплённые (fixed, GCHandle.Alloc), сильные дескрипторы.
  • Очередь финализации (объекты, ожидающие финализатор). Всё, что достижимо от корней, живо, остальное мусор.

Разбор

JIT в Release может считать локальную переменную мёртвой ещё до конца метода, поэтому объект собирается раньше, чем кажется.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.