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