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