Выбор ответа Junior GC, IDisposable и производительность спрашивают часто обновлено

Поколения сборщика мусора

Вопрос

Почему сборщик мусора .NET делит кучу на поколения?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Большинство объектов умирает молодыми, поэтому часто чистить выгодно только их. Гипотеза поколений: новые объекты чаще всего быстро становятся мусором.

Варианты ответа

  1. Чтобы у каждого потока было своё поколение и сборки не мешали друг другу
  2. Чтобы разделить объекты типов значений и ссылочных типов по разным кучам
  3. Большинство объектов умирает молодыми, поэтому часто чистить выгодно только ихправильный ответ
  4. Поколения нужны только для финализаторов: объекты ждут в них вызова

Разбор

Гипотеза поколений: новые объекты чаще всего быстро становятся мусором. Сборка поколения 0 просматривает маленькую область и стоит дёшево, выжившие переезжают в 1, затем в 2. Полная сборка поколения 2 редкая и дорогая. Поколения не привязаны к потокам и не делят объекты по виду типа. Финализация это отдельный механизм.

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

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