Как работает управление памятью в Python, в частности в CPython?

В CPython подсчёт ссылок отвечает за освобождение многих объектов, а циклический GC обнаруживает недостижимые циклы контейнеров. Внутренний allocator управляет повторным использованием памяти.

Короткий ответ

Что ответить на собеседовании

В CPython подсчёт ссылок отвечает за освобождение многих объектов, а циклический GC обнаруживает недостижимые циклы контейнеров. Внутренний allocator управляет повторным использованием памяти.

Подробный разбор

Ответ с пояснениями

В CPython подсчёт ссылок отвечает за освобождение многих объектов, а циклический GC обнаруживает недостижимые циклы контейнеров. Внутренний allocator управляет повторным использованием памяти.

Переменные хранят ссылки, а присваивание не копирует объект автоматически. Удаление имени уменьшает число ссылок, но другие ссылки могут сохранять объект. Освобождённые блоки не обязаны сразу возвращаться ОС, поэтому RSS может не уменьшиться. Для диагностики разделяйте достижимые данные, циклы, native-память и удержание allocator.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее