Получить потребление памяти процесса
Мой скрипт AutoIt автоматизирует тестовые случаи. Я подозреваю, что-то утечка памяти. Он начинается с 10 МБ, когда тестовые примеры заканчиваются, он достигает около 40 МБ (значения диспетчера задач).
Я хочу, чтобы мой скрипт AutoIt сообщал о потреблении памяти после каждого теста. Зная разницу, я, вероятно, смогу найти причину.
Как я могу получить потребление памяти процессом, используя скрипт AutoIt?
1 ответ
Решение
Вы ищете WorkingSetSize, который, вероятно, не совпадает со значением, указанным в вашем диспетчере задач. Согласно документации, рабочий набор - это объем памяти, физически сопоставленный с контекстом процесса в данный момент времени.
Вот как это определить:
$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
объект с этим методом.