NAME Devel::MemUsed - returns how much memory as allocated since the Devel::MemUsed object construction SYNOPSIS use Devel::MemUsed; my $memused = Devel::MemUsed->new(); my %h = ( map { $_ => 1 } (1..100) ); print "my hash allocated $memused bytes of memory\n"; # for me 15632 $memused->reset; my %h = ( map { $_ => 1 } (1..1000) ); print "my hash allocated $memused bytes of memory\n"; # for me 128104 DESCRIPTION The purpose of this module is to see how much more memory is allocated after some lines of code that were executed. How much memory a huge hash takes or an eval of a "foreign" code. Second purpose was to try Devel::Mallinfo and Contextual::Return. Devel::Mallinfo returns a hash filled with a "mallinfo" struct. This struct is defined in malloc.h and looks like this: struct mallinfo { int arena; /* non-mmapped space allocated from system */ int ordblks; /* number of free chunks */ int smblks; /* number of fastbin blocks */ int hblks; /* number of mmapped regions */ int hblkhd; /* space in mmapped regions */ int usmblks; /* maximum total allocated space */ int fsmblks; /* space available in freed fastbin blocks */ int uordblks; /* total allocated space */ int fordblks; /* total free space */ int keepcost; /* top-most, releasable (via malloc_trim) space */ }; While writing the tests I have discovered two strange thinks. 1st is that: my $x1 = "x" x (100*1024); # this one takes >200kB of memory ?!?!? my $x2 = eval '"x" x (100*1024)'; # this one just ~100kB 2nd is that ""x" x 128*1024" is a magic border when "hblkhd" start to increase. To get some meaning full results of memory usage I had to add "uordblks + hblkhd" together to get total memory usage. What is the real meaning of "hblkhd" and how it works with memory allocation of huge strings is unclear to me. If you know some details or explanation I'll be more then happy to hear it. On YAPC Europe 2008 Darko Obradovic showed a code snipped using Devel::Mallinfo and a function "mallinfo" to get the statistics of memory allocated using "malloc". On this same conference Damian Conway in his keynote was showing Contextual::Return. I put those two together and play around, hopefully producing something useful. :-) PROPERTIES METHODS new() Object constructor. used() Returns how many bytes of memory is used. reset() Reset the "counter" and start to count the memory allocated from the line of code where the "reset()" was called. allocated_memory() Return total number of "mmap" allocated memory since the start of the program. THANKS TO Darko Obradovic for his talk about . and Damian Conway for his YAPC Europe 2008 keynote + the hack number #92 in "Perl Hacks" book where I first read about Contextual::Return. AUTHOR Jozef Kutej LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.