[Moscow.pm] mod_perl и утечки памяти

Alex Shatlovsky shatlovsky на gmail.com
Чт Июл 30 02:53:15 PDT 2009


Привет,

Путем последовательного усечения выяснил, что проблема в
последовательности строк:
print STDERR "$ref\n";
next unless $ref;

Именно из-за нее вызов Devel::Size::total_size( $ref ) корректно
отрабатывает только один раз.
Второй раз возвращается 0.

Если поменять строки местами, то все отрабатывает как надо.

В тред призываются гуру perl internals. :-)

===========================================
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;
use Devel::Size;

TestGreedy::init();

for (1..2) {
    {
        no strict;
        my $name = 'TestGreedy::SPAM';
        for my $type (qw(SCALAR ARRAY REF HASH)){
            print STDERR "$type\n";
            my $ref = *{$name}{$type};
            print STDERR "$ref\n";
            next unless $ref;
            print Devel::Size::total_size( $ref ), "\n";
        }
    }
}

exit;

package TestGreedy;

use vars qw(
    $SPAM
);

sub init {
    my $f =   "x" x 1024 x 1024 ;
    foreach my $i (1 .. 50 ) {
        $SPAM->{$i} = $i . $f;
    }
}
===========================================


--

2009/7/29 Ruslan Zakirov <ruslan.zakirov на gmail.com>:
> Там где-то было написано про кеширование.
>
> 2009/7/29 Alex Shatlovsky <shatlovsky на gmail.com>:
>> Привет,
>>
>> 2009/7/29 Ruslan Zakirov <ruslan.zakirov на gmail.com>:
>>> Вот так где-то. Патч к B::TerseSize и скрипт посмотреть на результат.
>>> Осталось в Apache::Status все это вывести красиво.
>>
>> Спасибо!
>> Сходу не завелось, при первом запуске под мод_перл размер показывает
>> правильно, при последующих Devel::Size::total_size() и
>> Devel::Size::size() возвращают 0.
>>
>> Но направление понял, буду разбираться.
>> Еще раз спасибо.
>>
>> --
>> С уважением,
>> А.Н.Шатловский
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
>
>
> --
> Best regards, Ruslan.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
С уважением,
А.Н.Шатловский


Подробная информация о списке рассылки Moscow-pm