Выбор ответа Senior Память и производительность обновлено

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

Вопрос

Зачем циклический сборщик CPython делит объекты на поколения?

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

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

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

Коротко

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

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

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

Разбор

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

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

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