我想在perl中运行程序时监视内存使用情况,这样如果当前程序使用的内存超过阈值,我应用方法A,否则,应用方法B.
任何人都有任何想法?
答案 0 :(得分:3)
我从http://www.perlmonks.org/?node_id=235757找到了这个脚本:
#!/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";
答案 1 :(得分:1)
这将是高度特定于操作系统的。对于Linux,我能够找到CPAN模块Sys::Statistics::Linux
,它能够读取/proc
并获取有关当前进程的数据。如果你在Solaris上运行的可能性很小,那就是Solaris::Procfs
。我在Windows上找不到任何东西。
更新:由于您在Solaris上 ,因此您肯定需要Solaris::Procfs
。
答案 2 :(得分:1)
如果您想要更轻便的东西,请使用GTop
。 mod_perl
manual has usage examples。