in reply to Re^2: Hash memory leak: posible scope issue?
in thread Hash memory leak: posible scope issue?
Should I separate them?
No. My thought was that the only way I could see of explaining your results is that your initial declaration:
our %RCache = (); keys( %RCache ) = 1020;
was in a different package to your reset subroutine:
sub CheckMemoryUsage { our %RCache; ...
and that because you redeclared the hash locally to the reset sub, you were manipulating two different hashes. But that doesn't make sense as the ENTER size would then be zero.
I've been unable to reproduce your results in a simplified test:
#! 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 ...
And the question was me speculating about possible scenarios.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Hash memory leak: posible scope issue?
by flexvault (Monsignor) on Jan 03, 2012 at 20:31 UTC | |
by BrowserUk (Patriarch) on Jan 03, 2012 at 20:35 UTC | |
by flexvault (Monsignor) on Jan 03, 2012 at 20:50 UTC | |
by flexvault (Monsignor) on Jan 07, 2012 at 19:07 UTC |