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

Как CPython освобождает память

Вопрос

Когда CPython освобождает объект без циклических ссылок?

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

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

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

Коротко

Правильный ответ: Сразу, когда счётчик ссылок падает до нуля. Основной механизм CPython это подсчёт ссылок: при обнулении счётчика объект уничтожается немедленно.

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

  1. Только при следующем запуске сборщика мусора gc
  2. При завершении процесса
  3. Сразу, когда счётчик ссылок падает до нуляправильный ответ
  4. Когда вызвали del для любого имени этого объекта

Разбор

Основной механизм CPython это подсчёт ссылок: при обнулении счётчика объект уничтожается немедленно. Модуль gc нужен только для циклов, которые подсчёт ссылок не видит. del x лишь удаляет одно имя и уменьшает счётчик: если на объект ссылается кто-то ещё, он жив.

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

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