I didn't write that recently. Had I written it recently, I would have said that any malloc that is smart enough to use mmap() instead of just sbrk() can return chunks back to the O/S. And apparently, that includes many current popular Unix-like operating systems.
| [reply] |
I knew that, but I was wondering why undef does free the memory and why Perl doesn't just do that automatically. | [reply] |
As an optimisation, perl often doesn't completely clear lexical arrays on scope exit. It frees the elements of the array, but the block of memory it has to hold pointers to the 1E6 elements isn't freed. This is on the assumption that if you entered the block once and created a big array, you're likely to do so again. On the other hand, undef frees the pointer block too.
Dave.
| [reply] |
So, basically, best practice would be to leave the undefs in the "startup subs" that load and parse XML configuration when the daemon is starting up, but remove them from the trigger subs that get called regularly throughout its life?
| [reply] |