I described my problem bearing in mind perl 5.6Aaah ... when I run my demo on perl-5.6 I can see what you mean - the memory usage does not drop down until the script exits.
However, I think it's as
ikegami says below:
...the memory is being put back into Perl's free memory pool and you just don't realize it.With perl-5.6 (running the script I posted), note that when do_simulation2() is called, the memory usage does *not* jump up. This is a sure sign that it is re-using the memory that was freed by do_simulation().
So there's no memory leaking going on, and no bug - it's just that with 5.6, freed memory stays locked up in the pool, whereas with 5.12 freed memory is being released back to the system. Task Manager therefore sees the memory release under 5.12, but doesn't see the memory release under 5.6. (It seems to me that 5.6's behaviour in this regard is probably more efficient than 5.12's ... but I expect that there are pros and cons.)
Now I need to upgrade Perl/mod_perl. A last question would be what do you recommend ... Sorry - I'm way out of touch with Apache and mod_perl. I don't think you should be worrying about updating just on the strength of this memory handling behaviour of 5.6 ... unless, of course, you really do need the freed memory to be released back to the system.
Cheers,
Rob