in reply to Re: Total Memory Size Used up by a Perl Script
in thread Total Memory Size Used up by a Perl Script

Thanks so much for your answer.

My intention actually is to measure the total memory size of all data structure used in my script.
I'm sorry if I wasn't being clear in my OP.

Then I try this simple script, comparing it with Devel::Size.
#!/usr/bin/perl -w use strict; use Proc::ProcessTable; use Devel::Size qw(size); my @arr = ('A' .. 'M'); my $devel_size = size(\@arr); print "With DEVEL::SIZE I'm $devel_size bytes big\n"; my $t = Proc::ProcessTable->new(); foreach my $p ( @{$t->table} ) { if($p->pid() == $$) { print "With Proc::ProcessTable I'm ", $p->size(), " bytes big.\n"; last; } }
It gives:
With DEVEL::SIZE I'm 104 bytes big With Proc::ProcessTable I'm 5357568 bytes big.
The difference here is so big. I wonder why? Does Proc::ProcessTable gives the size which I intend to get? If no, is there a way to achieve my original intention?

Regards,
Edward

Replies are listed 'Best First'.
Re^3: Total Memory Size Used up by a Perl Script
by tirwhan (Abbot) on Oct 08, 2005 at 09:45 UTC

    As you said yourself, Devel::Size only gives you the size of a single data structure, whereas Proc::ProcessTable gives you the size of the whole running process, including perl interpreter, loaded modules etc.

    That being said, 5MB seems kinda big for what you're doing here. Try EvanCarrol's suggestion as well to confirm the result, it should give you the same as Proc::ProcessTable (search.cpan.org seems to be having some problems atm, so I can't download the modules myself to check.)