Необходимо ли в Perl вручную освобождать память? Дело в том, что у меня есть скрипт фильтрации почты(milter api), который все время увеличивается в размере. Что делать? В Cи все понятно - не освободил память. А тут что?
Если не ошибаюсь,
В perl "сборщик мусора" удаляет объект, когда он исчезает из облатси видимотси и, если на него не осталось ни одной ссылки.
те после кажного выполнения приведенной ниже процедуры в памяти буден оставаться ещё два анонимных хеша.sub test {
my $a = {};
my $b = { a => \$a };
$a = { b => \$b };
}
>Необходимо ли в Perl вручную освобождать память? Дело в том, что уНет, не нужно. Разумеется можно наворотить что-нибудь вроде:
my @a; while(1) { push @a, "I'm gonna kill this sucker"; }
>меня есть скрипт фильтрации почты(milter api), который все время увеличивается в
>размере. Что делать? В Cи все понятно - не освободил память.
>А тут что?Скорее всего подпихиваешь всё новые и новые данные в массивы и хэши, которые существуют всё время работы программы.
Хороший совет - перебей все глобальные переменные. Параметры функций и возвращаемые результаты передавай в явном виде.