Найти - Пользователи
Полная версия: Утечки памяти
Начало » Python для экспертов » Утечки памяти
1 2
alex925
Подскажите пожалуйста, как найти место где течет память?
doza_and
Вы не хотите как-то конкретизировать вопрос? Почему вы вообще решили что она течет?

В том виде как у вас задан вопрос. Отключать участки кода и выполнять тест что она течет. :)

Поскольку обычно никто не жалуется что она течет, надо начать с компилированных модулей.
alex925
Есть программа, которая парсит данные с сети и отображает их в gui. После каждого запуска обновления занимаемая память увеличивается на несколько мб, таким образом программа через некоторое время достигает 1 гб и т д
Это на столько жестко, что если открыть системный монитор и начать обновлять программу, то она с 40 мб на глазах вырастает до 200 (после n попыток обновить данные).
ZerG
Ну так это не утечка памяти! Это у вас в программе в каком то месте не сделан выход.
Или очистка данных перед обновлением.
Просмотрите внимательно код! Может вы файл(коннект к бд) где-то не закрываете?
Shaman
Вообще - не обязательно в этом случае, утечки быть могут. Причины: циклические ссылки и неправильное использование __del__.
Загляните в документацию около gc.garbage
py.user.next
alex925
как найти место где течет память?
Скорее всего, это какой-то список заполняется многократно, но без предварительной очистки.
alex925
py.user.next
да в том, то и дело, что не нахожу такого места
4kpt_IV
Профилировщиком гоняли?
PooH
Самому это делать не приходилось, но модуль gc умеет отображать свою статистику. Сделайте сброс его данных в логи в нескольких местах программы и погоняйте.
sander
alex925
memprof, objgraph
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB