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