私はPerlスクリプト用にWindows上でActivePerlを使用していますので、Windowsタスクマネージャーの「プロセス」タブから使用するメモリ量を調べることができます。WindowsでPerlプログラムのメモリ使用量をプログラムで確認するにはどうすればよいですか?
これはむしろ面倒なことです。 Perlプログラムのメモリ使用量を決定する別の方法はありますか?
私はPerlスクリプト用にWindows上でActivePerlを使用していますので、Windowsタスクマネージャーの「プロセス」タブから使用するメモリ量を調べることができます。WindowsでPerlプログラムのメモリ使用量をプログラムで確認するにはどうすればよいですか?
これはむしろ面倒なことです。 Perlプログラムのメモリ使用量を決定する別の方法はありますか?
ActivePerlを使用している場合、これらのソリューションの一部は動作しません。私は、ActivePerlの箱の中で動作するはずのものを一緒に飾ったが、5.10未満でテストされていないので、あなたの走行距離は変わるかもしれない。パックスは答えとして、あなたはCygwinがインストールされている場合、これはWindowsでのみ動作します
use Win32::OLE qw/in/;
sub memory_usage() {
my $objWMI = Win32::OLE->GetObject('winmgmts:\\\\.\\root\\cimv2');
my $processes = $objWMI->ExecQuery("select * from Win32_Process where ProcessId=$$");
foreach my $proc (in($processes)) {
return $proc->{WorkingSetSize};
}
}
print 'Memory usage: ', memory_usage(), "\n";
一つの方法は、Proc::ProcessTable
を使用することです:
use Proc::ProcessTable;
print 'Memory usage: ', memory_usage(), "\n";
sub memory_usage() {
my $t = new Proc::ProcessTable;
foreach my $got (@{$t->table}) {
next
unless $got->pid eq $$;
return $got->size;
}
}
試してみてください。
open(STAT , "</proc/$$/stat")
or die "Unable to open stat file";
@stat = split /\s+/ , <STAT>;
close(STAT);
あなたがPerlMonksの "Determining memory usage of a process" と "Determining the Memory Usage of a Perl program from within Perl" を見てみることができます。
WMIは、プログラムの中からこの種のものを調べるための標準的な方法です。私はあなたがthisを探していると信じています。
MaximumWorkingSetSize
は、使用中の物理RAMの値です。 VirtualSize
は、使用している総アドレススペースのサイズです。
など、
WorkingSetSize
対MaximumWorkingSetSize
、あなたはすなわち、を求めるものに応じて異なる番号を取得することができます。 – Joel