我在这里遵循了最佳答案,请参阅下面的代码以获取在我的 perl 代码中的给定行使用的系统内存。我正在运行 Windows 7 Home Basic,64 位,4 GB 内存,4.06 GB 虚拟内存(在我的电脑下的高级系统设置中指定)。在 perl Out of Memory之前,我在一行中收到了 perl 的以下消息。
内存使用量:1916346368
假设这个数字以字节为单位(= 1.78 GB),为什么 perl 会出现内存不足?如何获取所有进程的系统总内存使用量?
计算内存的代码块如下。我正在使用草莓 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 占用更多内存。