#! 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 ...