Perrin Harkins wrote:
On Fri, Dec 11, 2009 at 11:37 AM, William T <dietbud...@gmail.com> wrote:
You can make sure the variables that the memory was malloc'd for have
gone out of scope, and there are not trailing references to them.
Perl will then reuse that memory.

It will keep the memory allocated to the out-of-scope variables unless
you undef them.

There's a summary of many PerlMonks discussions on this topic here:
http://www.perlmonks.org/?node_id=803515

Perrin,
that is in the end, in my personal opinion, a rather confusing discussion.

So, to an extent, is your phrase above.
When you say "It (perl) will keep the memory", do you mean that
- the perl interpreter embedded in this Apache child will keep the memory (and not return it to the OS), but will re-use it if possible for other variable allocations happening within its lifetime ?
or
- the perl interpreter embedded in this Apache child will keep the memory (and not return it to the OS), and never re-use it again for any other variable allocation happening within its lifetime
(in other words, this is a leak) ?

Does any guru care to provide some simple real-world examples of when memory once allocated to a variable is/is not being re-used, in a mod_perl handler context ?
Or pointers to ditto ?
(Maybe at first independently of whether the memory also may, or not, be returned by Perl to the OS)

Maybe on this last subject, what I gather from this and other discussions I've seen, is that once the Perl interpreter obtained some memory from the OS, it rarely returns it (before it exits); and if it does, it is in any case not practically predictable in a cross-platform way, so one cannot rely on it. Is that a fair interpretation ?


Would it be preferable/easier if I construct some simple examples myself and present them here asking if memory allocated to "my $a" is being leaked or not ?


Reply via email to