in reply to perl memory usage

Just because a buffer has been freed doesn't mean it gets released to the system. Consider this case:
my $buf; for (0..1000) { $buf = 'A' x (1024*1024*100); print "Run $_: Allocated\n"; undef $buf; print "Run $_: Done\n"; }
That would keep fetching and freeing memory to the system if things worked in the way you want (that would be slow). In stead, your memory manager keeps some memory in reserve so that it doesn't do so bad in such cases (but doesn't do so well in best cases).

Memory management in general, but especially perl's, is complicated and not necessarily intuitive (but works very well).