http://www.perlmonks.org?node_id=1007095


in reply to Memory issue with Hash

nowise,

I ran your code (after a little clean-up) out to:

Record counter => 335700
And I verified the real memory usage as '1776MB' constant. I verified this with 'top' and with:
'/bin/ps -o rssize -p $$'
I used the latest Debian Linux 2.6.32 distribution and used perl 5.12.2 for the test. I did not use 'Proc::ProcessTable', so I can't say whether that is part of your problem. I also deleted the 'sleep( 10 );' since I didn't see any value in waiting 10 seconds to see the screen fill up immediately again.

Some suggestions:

From this test, your problem isn't the hash growing. It could be your system or the system's perl that's giving you the problem.

Good Luck!

Update: I remembered I had some AIX systems with perl5.8.8 and I ran the code to 'Record counter => 10320' and the memory usage stayed as '1940MB'. So it doesn't seem to be a problem on the AIX perl5.8.8 either

Update2: My "MB" in above should be "KB" as the way 'top' and 'ps' return the information.

"Well done is better than well said." - Benjamin Franklin

Replies are listed 'Best First'.
Re^2: Memory issue with Hash
by nowise (Initiate) on Dec 05, 2012 at 10:36 UTC

    i donot know how the system or perl is giving the error.

    can you please provide some more details on it.

    i had read somewhere that perl should be compiled with the "usemymalloc=y" compiler flag to release the memory.

    when i ran the perl -V on the commandline i could see this flag set to "y".

    Also the only contributing factor to increase in the process memory , seems to be because of hash.

    please see below the memory increase in the process ,it remain constant to some point , and then gaian start increasing :

    Record counter => 20 Process Status:6.328125MB Record counter => 30 Process Status:6.4296875MB Record counter => 40 Process Status:6.4375MB Record counter => 50 Process Status:6.4375MB Record counter => 60 Process Status:6.4453125MB Record counter => 70 Process Status:6.4453125MB Record counter => 80 Process Status:6.4453125MB Record counter => 90 Process Status:6.453125MB Record counter => 100 Process Status:6.453125MB Record counter => 110 Process Status:6.453125MB Record counter => 120 Process Status:6.453125MB Record counter => 130 Process Status:6.4609375MB