Выбор ответа Junior GC, IDisposable и производительность спрашивают часто обновлено
Поколения сборщика мусора
Вопрос
Почему сборщик мусора .NET делит кучу на поколения?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Большинство объектов умирает молодыми, поэтому часто чистить выгодно только их. Гипотеза поколений: новые объекты чаще всего быстро становятся мусором.
Варианты ответа
- Чтобы у каждого потока было своё поколение и сборки не мешали друг другу
- Чтобы разделить объекты типов значений и ссылочных типов по разным кучам
- Большинство объектов умирает молодыми, поэтому часто чистить выгодно только ихправильный ответ
- Поколения нужны только для финализаторов: объекты ждут в них вызова
Разбор
Гипотеза поколений: новые объекты чаще всего быстро становятся мусором. Сборка поколения 0 просматривает маленькую область и стоит дёшево, выжившие переезжают в 1, затем в 2. Полная сборка поколения 2 редкая и дорогая. Поколения не привязаны к потокам и не делят объекты по виду типа. Финализация это отдельный механизм.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «GC, IDisposable и производительность»
- ArrayPool и аренда буферов
- Где выделит память лямбда в цикле
- Зачем GC.SuppressFinalize в Dispose
- Шаблон Dispose
- Финализатор и сборка мусора
- Быстрый разбор большого ввода
- FizzBuzz с быстрым выводом
- Свой wc: строки, слова, максимальная длина