Evgeny
Ноя. 24, 2010 07:46:53
Столкнулся с ситуацией, в которой объекты ссылаются друг на друга, и, при выходе из программы,
их деструкторы не срабатывают. То есть не выполняются операторы в соотв. __del__(). Тут два вопроса:
- Таки программа “течет” или все же при выходе из интерпретатора срабатывает некий ReleaseAll?
- Какую тактику лучше использовать для отлова таких багов при отладке?
Андрей Светлов
Ноя. 24, 2010 10:47:49
1. Память течет. Объекты с __del__ не обрабатыватся garbage collector.
2. Не использовать __del__. Практически никогда не нужен. Подобие деструктора можно получить через weak reference с callback
Evgeny
Ноя. 24, 2010 12:07:08
>> 1. Память течет. Объекты с __del__ не обрабатыватся garbage collector.
То есть, даже если __del__ срабатывает, объект не удаляется?
>> 2. Не использовать __del__. Практически никогда не нужен. Подобие деструктора можно получить через weak reference с callback
А он мне и не нужен. Вопрос в чем? Если объекты, ссылающиеся друг на друга не удаляются, то
нужно эти ситуации как-то отлавливать.
Андрей Светлов
Ноя. 24, 2010 17:49:48