Получить потребление памяти процесса

Мой скрипт 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 объект с этим методом.

Другие вопросы по тегам