Главная страница


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)
 
 

Вернуться к списку тем, сортированных по:

 Тема:    Автор:    Дата:  
 Re: mod_perl: parallel requests   Andrew Alakozow   10 Apr 2003 21:17:40 
 Re: mod_perl: parallel requests   Oleg Ivanenko   11 Apr 2003 12:02:26 
Архивное /ru.cgi.perl/844981a4703e.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional