Вопрос проверяет, понимаете ли вы причины утечек памяти в Python и практики их предотвращения.
Утечки памяти в Python чаще всего связаны с удержанием ссылок на объекты. Нужно следить за глобальными структурами, кэшами и замыканиями. Важно корректно закрывать ресурсы и использовать контекстные менеджеры. Регулярный мониторинг памяти помогает выявлять проблемы рано. Сам по себе сборщик мусора не гарантирует отсутствие утечек.
Утечка памяти в Python — ситуация, когда память больше не используется логически, но продолжает удерживаться ссылками и не освобождается.
Долгоживущие ссылки
Глобальные списки и словари.
Singleton-объекты без очистки.
Кэши без ограничений
Отсутствие TTL или лимитов размера.
Неконтролируемый рост структур.
Циклические ссылки
Объекты с __del__, которые не могут быть собраны GC.
Сложные графы объектов.
Неосвобождённые ресурсы
Файлы, сокеты, соединения.
Отсутствие close() или with.
Контроль жизненного цикла
Чётко понимать, кто владеет объектом.
Удалять ссылки, когда объект больше не нужен.
Ограниченные кэши
LRU.
Явные политики очистки.
Контекстные менеджеры
with open("file.txt") as f:
data = f.read()
Регулярный мониторинг
Замеры потребления памяти в рантайме.
Анализ роста памяти под нагрузкой.
Избежать утечек памяти в Python можно через контроль ссылок, ограничение кэшей и дисциплину работы с ресурсами, а не только полагаясь на GC.