Proc::ProcessTable has access to the sort of information found in programs like top and ps. This sub finds the memory usage of the program that calls it.

Proc::ProcessTable currently works on windows, linux, solaris, aix, hpux, freebsd, irix, dec_osf, bsdi, netbsd, unixware 7.x and SunOS.

The windows port requires the Cygwin environment.

use Proc::ProcessTable; print "My memory=", memory_usage(), "\n"; sub memory_usage { my $t = new Proc::ProcessTable; foreach my $got ( @{$t->table} ) { next if not $got->pid eq $$; return $got->size; } }

Replies are listed 'Best First'.
Re: Find memory usage of perl program
by Anonymous Monk on May 06, 2008 at 19:59 UTC

    i just made a simple script to test this out and..

    #!/usr/bin/perl use Proc::ProcessTable; sub memory_usage { my $t = new Proc::ProcessTable; foreach my $got ( @{$t->table} ) { next if not $got->pid eq $$; return $got->size; } } print 'memory: '. memory_usage()/1024/1024 ."\n";

    Running it results in:

    $ ./test.pl memory: 6.26953125

    how normal is that?