Форум сайта python.su
Столкнулся с ситуацией, в которой объекты ссылаются друг на друга, и, при выходе из программы,
их деструкторы не срабатывают. То есть не выполняются операторы в соотв. __del__(). Тут два вопроса:
- Таки программа “течет” или все же при выходе из интерпретатора срабатывает некий ReleaseAll?
- Какую тактику лучше использовать для отлова таких багов при отладке?
Офлайн
1. Память течет. Объекты с __del__ не обрабатыватся garbage collector.
2. Не использовать __del__. Практически никогда не нужен. Подобие деструктора можно получить через weak reference с callback
Офлайн
>> 1. Память течет. Объекты с __del__ не обрабатыватся garbage collector.
То есть, даже если __del__ срабатывает, объект не удаляется?
>> 2. Не использовать __del__. Практически никогда не нужен. Подобие деструктора можно получить через weak reference с callback
А он мне и не нужен. Вопрос в чем? Если объекты, ссылающиеся друг на друга не удаляются, то
нужно эти ситуации как-то отлавливать.
Офлайн
http://www.python.su/forum/viewtopic.php?pid=20139#p20139 и вообще вся ветка обсуждения.
http://guppy-pe.sourceforge.net/ - профайлер памяти.
Офлайн
Спасибо!
Офлайн