我正在使用以下perl程序,该程序使用WMI类Win32_Process来确定进程的内存使用情况
use strict;
use warnings;
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 Name=\'notepad.exe\'");
my $memory = 0;
foreach my $proc (in($processes))
{
$memory = $memory + $proc->{WorkingSetSize};
}
return $memory;
}
print 'Memory usage: ', memory_usage(), "\n";
WMI类Win32_Process及其属性在MSDN here
上给出问题是它计算工作集内存并且我想计算私人工作集内存,在链接页面上没有定义任何属性
有什么方法可以从这个类中计算私人工作集内存吗?
答案 0 :(得分:4)
将Win32_Process
更改为Win32_PerfRawData_PerfProc_Process
,将WorkingSetSize
属性更改为WorkingSetPrivate
。这将为您提供私人工作集。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394323(v=vs.85).aspx