our %RCache = (); keys( %RCache ) = 1020;
####
sub CheckMemoryUsage
{ our %RCache;
...
####
#! perl -slw
use strict;
use Devel::Size qw[ total_size ];
our %cache; keys %cache = 1020;
sub resetCache {
our %cache;
printf "Before: keys: %u size: %u\n",
scalar keys %cache,
total_size( \%cache );
%cache = ();
printf "After: keys: %u size: %u\n",
scalar keys %cache,
total_size( \%cache );
}
while( 1 ) {
$cache{ int( rand 2**32 ) } = chr(0) x 2048;
if( keys %cache >8192 ) {
resetCache();
}
}
__END__
C:\test>junk29
Before: keys: 8193 size: 17727631
After: keys: 0 size: 131144
Before: keys: 8193 size: 17727579
After: keys: 0 size: 131144
Before: keys: 8193 size: 17727590
After: keys: 0 size: 131144
Before: keys: 8193 size: 17727614
After: keys: 0 size: 131144
Before: keys: 8193 size: 17727556
After: keys: 0 size: 131144
Before: keys: 8193 size: 17727578
After: keys: 0 size: 131144
Before: keys: 8193 size: 17727621
After: keys: 0 size: 131144
...