Выбор ответа Senior Память и производительность обновлено
Поколения сборщика мусора
Вопрос
Зачем циклический сборщик CPython делит объекты на поколения?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Большинство объектов умирает молодыми, их проверяют чаще. Это гипотеза поколений: недавно созданные объекты чаще всего быстро становятся мусором.
Варианты ответа
- Чтобы освобождать объекты строго в порядке их создания
- Большинство объектов умирает молодыми, их проверяют чащеправильный ответ
- Чтобы объекты разных поколений хранились в разных процессах
- Поколения нужны только для работы
weakref
Разбор
Это гипотеза поколений: недавно созданные объекты чаще всего быстро становятся мусором. Сборка молодого поколения дешёвая, выжившие переходят в старшее, которое сканируется реже. Так сборщик тратит меньше времени. Порядок освобождения, процессы и weakref к поколениям отношения не имеют.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Память и производительность»
- Встроенные функции против ручного цикла
- Пересечение больших списков id
- Числа Фибоначчи без экспоненты
- Скользящая медиана потока на двух кучах
- Найти пару с суммой быстрее O(n²)
- Циклические ссылки и gc
- Управление памятью в CPython
- Инструменты профилирования Python