Обсуждение статьи тематического каталога: Использование памяти в Perl при работе с большими строками (perl hash array memory debug)Ссылка на текст статьи: http://www.opennet.me/base/dev/perl_memory.txt.html
Статья созана человеком не понимающим как функционирует выделение памяти в Perl. Perl не отдает память системе. Поэтому при измерении кажетсяы что внутри Perl памятть не высвобождается. Упомянутый perl 5.4 уже давно не актуален, осенью 2010-го вышел perl 5.12.2, где многое изменено.$1,$2,...,$&,$`,$' - из этих переменных не рекомендуется использовать только $&,$`,$', в perl 5.10 добавлены новые возможности которые позволяет сделать их использование эффективнее.
Там же написано, статья 2002 г. =)
> Там же написано, статья 2002 г. =)Все что я написал, было известно и в 2002-ом году. И уже тогда был Perl 5.8.
>Статья созана человеком не понимающим как функционирует выделение памяти в Perl. Perl не отдает память системе. Поэтому при измерении кажетсяы что внутри Perl памятть не высвобождается. Упомянутый perl 5.4 уже давно не актуален, осенью 2010-го вышел perl 5.12.2, где многое изменено.Тут кроме статьи надо понимать что избавление от лишнего копирования это не только уменьшает память но и увиличивает скорость исполнения. Про использование @_ под функцией - это полезно. Также полезно вызывать явно undef поскольку это особождает часть памяти, но остается кэш на повторное использование. Честно говоря я так и не понял до конца в каких случаях отдается память полностью, поскольку тестирую один и тот же код в в некоторых случаях увидел практически полную отдачу памяти (оставалась под интерпретатор пара метров при длинах переменной в несколько сотен мегабайт). Тема заинтересовала - надо копнуть.