ここで一番の答えに従いました。perlコードの特定の行で使用されているシステムメモリを取得するコードについては、以下を参照してください。Windows 7 Home Basic、64 ビット、4 GB RAM、4.06 GB 仮想メモリ ( [マイ コンピューター]の詳細システム設定で指定) を実行しています。perl がOut of Memoryになる前に、perl から次のメッセージを一行で受け取りました。
メモリ使用量: 1916346368
この数値がバイト単位 (= 1.78 GB) であると仮定すると、なぜ perl はメモリ不足になったのでしょうか? すべてのプロセスによるシステムの合計メモリ使用量を取得するにはどうすればよいですか?
メモリを計算するコード ブロックは次のとおりです。Strawberry Perl 5.12.3.0 を使用しています
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";
Perl -V は次の情報を提供します http://pastebin.com/mvF7YgKH
更新:問題は 64 ビット perl で解決されました。しかし、プログラムが Ubuntu の 32 ビット perl でヒッチなしで実行されたことにも気付きました。したがって、Windows の Strawberry perl は、Ubuntu の perl よりも多くのメモリを消費する可能性があります。