[Moscow.pm] mod_perl и утечки памяти
Ruslan Zakirov
ruslan.zakirov на gmail.com
Ср Июл 29 01:40:06 PDT 2009
2009/7/29 Alex Shatlovsky <shatlovsky на gmail.com>:
> Привет,
>
> Подскажите, пожалуйста, чем можно посмотреть кто пожрал память под mod_perl?
> Apache::Status говорит только половину правды: похоже, что ссылочные
> переменные он учитывает по размеру собственно ссылки (в моем случае 16
> байт).
> Тестовый код (см. ниже) честно увеличивает апач на 53 мб, однако
> Apache::Status видит из них только 3.
> Собственно вопрос в том, как найти утечку этих "невидимых" мегабайтов?
Пожрал их perl, они не утекли, но назвать это нормальным конечно нельзя.
Код, который вы написали тоже странный. Комментарии в коде.
> Вот тестовый код:
> ==================================
> # TestGreedy.pm
> use strict;
> use warnings;
>
> package TestGreedy;
>
> use vars qw(
> $TIMESTAMP
> $SPAM
> );
>
> sub init {
> $TIMESTAMP = scalar( localtime );
> my $f = "x" x 1024 x 1024 ;
создали строчку, +1М
>
> foreach my $i (1 .. 50 ) {
> $SPAM->{$i} = $i . $f;
и создали 50 копий этой строчки, +50М
> }
> }
После выхода из этого блока $f осталось padlist функции для повторного
использования, остальные остались в глобальной переменной. Можно
высвободить 1M написав $f = undef или $f = '' прямо перед выходом.
>
> init();
>
> 1;
Собственно не вижу причин для perl освободить память. Как бы хотели,
чтобы перл вле себя?
--
Best regards, Ruslan.
Подробная информация о списке рассылки Moscow-pm