检索进程的内存消耗

时间:2013-08-16 18:52:11

标签: windows memory-leaks autoit working-set

我的AutoIt脚本自动化测试用例。我怀疑有什么东西在泄漏记忆。它从10 MB开始,当测试用例结束时,它达到大约40 MB(Task Manager值)。

我希望我的AutoIt脚本在每个测试用例后报告内存消耗。知道差异我可能找到原因。

如何使用AutoIt脚本检索进程的内存消耗?

1 个答案:

答案 0 :(得分:3)

您正在寻找WorkingSetSize,它可能与您的任务管理器中列出的值不完全相同。根据它的documentation,工作集是在给定时间物理映射到进程上下文的内存量。

以下是如何确定它:

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$pid = Run("notepad")

$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId = " & $pid, "WQL", _
                $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) And $pid <> -1 Then
   For $objItem In $colItems
      ConsoleWrite("WorkingSetSize: " & $objItem.WorkingSetSize & @CRLF)
   Next
Else
   ConsoleWrite("No WMI Objects Found for class 'Win32_Process' with ProcessId = " & $pid & @CRLF)
EndIf

您也可以使用此方法从Win32_Process对象中找出任何other value