|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Oleg Ivanenko 2:5020/400 11 Apr 2003 12:02:26 To : Andrew Alakozow Subject : Re: mod_perl: parallel requests -------------------------------------------------------------------------------- Andrew Alakozow пишет: >>>Попробуй сделать класс Tree, в котором будет сидеть ссылка на корень >>>дерева, и в его деструкторе освобождать память. > > OI> Деструктор вызывается автоматически. Т. е. как здесь уже было сказано, > OI> он HЕ ВЫЗОВЕТСЯ из-за циклических ссылок. У меня есть метод > OI> освобождающий память для этого объекта. Hе это главное. Я не об этом > OI> спрашивал. > > use strict; > > { > > my $n1 = TreeNode->new('n1'); > my $n2 = TreeNode->new('n2'); > > $$n1{parent} = $n2; > $$n2{child} = $n1; > > my $t = Tree->new; > > $$t{root} = $n2; Я еще раз повторяю, что при использовании mod_perl, если я вставлю сюда следующее: #----------- my $err=0; warn 1/$err; #----------- Скрипт вывалится, а все три объекта останутся в памяти. > > } > > print "The End!\n"; > > package Tree; > sub new { return bless {} } > sub DESTROY { print "destroy tree\n"; undef ${${$_[0]}{root}}{child} } > > package TreeNode; > sub new { return bless { name => $_[1] } } > sub DESTROY { print "destroy tree node ".${$_[0]}{name}."\n" } > > aa29 > > Правильно, ты ввел ЛИШHИЙ объект (Tree), на который никто больше не ссылается, и именно это позволяет ему, когда он уходит из области видимости, удалять свое содержимое. Еще раз повторяю, я знаю, как освободить память. Просто я то, что ты занес в деструктор. Сделал отдельным методом, который может быть вызван в лоб и по любому вызывается из деструктора. Только от ситуации описанной мной выше это не спасает. Спасает только заворачивание всех критических участков в eval, как рекомендовал давеча Victor Wagner. Меня больше интересует приснопамятный 'use lib'. -- Truly yours, Oleg Ivanenko aka Ash oai-ash@yandex.ru [Все это было бы смешно, когда бы не было так грустно][Delphi][Guitar] ICQ[119082031] http://www.ash.hut.ru --- ifmail v.2.15dev4 * Origin: ASKA (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/844981a4703e.html, оценка из 5, голосов 10
|