Встречается на собеседованиях • сегодня

Как обнаружить утечку памяти

В Python утечки памяти чаще всего возникают из-за циклических ссылок или неосвобождаемых объектов. Для обнаружения:

  1. Используй gc модуль:
python
import gc
gc.set_debug(gc.DEBUG_LEAK)  # Включаем отладочную информацию
  1. Проверь количество объектов:
python
len(gc.get_objects())  # Сравниваем до и после подозрительного кода
  1. Используй tracemalloc (Python 3.4+):
python
import tracemalloc
tracemalloc.start()
# ... выполняем код ...
snapshot = tracemalloc.take_snapshot()
for stat in snapshot.statistics('lineno')[:10]:
    print(stat)
  1. Профилировщики:
  • memory_profiler (@profile декоратор)
  • objgraph для визуализации ссылок
  • pympler для детального анализа

Пример с objgraph:

python
import objgraph
objgraph.show_most_common_types(limit=20)  # Показывает 20 самых частых типов

Особое внимание стоит уделять:

  • Циклическим ссылкам (особенно в графах объектов)
  • Кэшам и глобальным переменным
  • Не закрытым файлам/соединениям
  • Большим структурам данных, которые не очищаются
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы