No, i did not mean freeing memory from lexicals. I meant the memory
allocated for the temporary results, such as
my $a = 'x' x 1000000
Here perl allocates 1M for $a and 1M for evaluating the right part,
after that it is possible to undef $a and reuse its memory (1M),
but the right part memory (one more 1M) can be used nowhere except the
same line of code.
This is strange. I understand that it can be an optimization trick,
but when you frequently operate with megabytes, this becomes a
pleasant feature which looks and behaves like a memory leak :)
Ivan
> > The matter is that perl DOES NOT REUSE MEMORY allocated for
> > intermediate calculation results. This is specially harmful to
> > data-intensive modperl applications where one perl process processes
> > many queries and can leak great amount of memory.
>
> This is known and it's not really a leak. Perl knows about that memory
> and does re-use it, the next time it needs that lexical variable. It's a
> performance optimization. Try running your code multiple times and you
> should see memory stay at the same level after the first run.
>
> There has been discussion about this on the mailing list which you can
> find in the archives. There has also been talk about changing this
> behavior for mod_perl 2, which Doug is working on.
>
> Anyway, if you just want the memory back, undef your lexicals after you
> finish with them.
>
> - Perrin
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]