I emphatically did not know this.
Jan Dubois says:
"If you ever use a 10MB string in a scalar variable, the hidden string buffer for this ariable will stay allocated, even if you just assign a new short string to it. This is even true for lexical variables after their scope has closed"
http://aspn.activestate.com/ASPN/Mail/Message/895049
This affects at least two programs that I know of off the top of my head.
Check for this (and other things) with Devel:Size (Score:1)
Reallocation (Score:2)
--
xoa
Re:Reallocation (Score:1)
In this case it doesn't even go back to Perl, and that's a little worrisome if you occasionally get a peak of huge indata.
To me that doesn't matter _that_ much since I tend to avoid long running processes, restarting the program every once in awhile. Even if Perl behaves and you code your stuff the right way, there is always some module that will mess up and not break a circular reference, or some external lib will forget t
Re:Reallocation (Score:2)
What is this rampant fallacy of applications giving memory back to the OS? That is completely dependent on the implementation of the malloc, and in many systems the (virtual) memory use never goes down, only up. I think glibc malloc does memory allocation using mmap(), and the munmap() by free() does make the process virtual memory use go down. But nevertheless, expecting free() (or at Perl level, undef()) to make one's memory use (as shown by, say, ps), is a false assumption. Completely explaining it re