Что нового

[Процессы] Скотлько использует памяти конкретный процесс?

rollex

Новичок
Сообщения
66
Репутация
1
например notepad.exe :smile: Еще хотелось бы знать не только занимаемую физическую память, но и свап.
 

Zaramot

I ♥ AutoIt
Сообщения
1 160
Репутация
659
Посмотри функцию ProcessGetStats()

Вот:
Код:
$PID = 'notepad.exe' ;Название процеса
run($PID) ;запускаем блокнот
ProcessWait($PID) ;ждём появдение процеса
$Mem = ProcessGetStats($PID) ;Узнаём о памяти процеса
MsgBox(0, 'PID', $Mem[0] / 1024 & ' Kб') ;Выводим занимаемую физическую память процеса
 
Автор
R

rollex

Новичок
Сообщения
66
Репутация
1
Zaramot
Спасибо. А как на счет виртуальной памяти?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
rollex,
Посмотрите функцию _WinAPI_GetProcessMemoryInfo() в WinAPIEx.au3.
 
Автор
R

rollex

Новичок
Сообщения
66
Репутация
1
madmasles
Спасибо. :IL_AutoIt_1:
 

Михаил

Новичок
Сообщения
20
Репутация
0
Мне тоже нужно получить объем ОЗУ который потребляет процесс, то есть то количество килобайт, которое указана в диспетчере задач на против процесса, я так понимаю это объем виртуальной памяти, пробовал:
Код:
#include <WinAPIEx.au3>
#include <Process.au3>
Opt('MustDeclareVars', 1)

Global $iMemory = 0, $bb,$aList, $aData, $sProcess = 'chrome.exe',$pid1,$Mem

$aList = ProcessList($sProcess)
If Not $aList[0][0] Then
    MsgBox(0, 'Память', 'Нет процессов ' & $sProcess)
    Exit
EndIf
For $i = 1 To $aList[0][0]
    $aData = _WinAPI_GetProcessMemoryInfo($aList[$i][1])
    If IsArray($aData) Then
        $iMemory += $aData[2]
    EndIf
Next

MsgBox(0, 'Память', $sProcess & ' жрет всего: ' & $iMemory)

Switch $iMemory
    Case 0 To 1024
        $iMemory = $iMemory & ' b'
    Case 1024 To 1048576
        $iMemory = Round($iMemory / 1024, 2) & ' kb.'
    Case Else
        $iMemory = Round($iMemory / 1048576, 2) & ' Mb.'
EndSwitch
MsgBox(0, 'Память', $sProcess & ' жрет всего: ' & $iMemory)

$PID1 = 'crome.exe' ;Название процеса
;run($PID) ;запускаем блокнот
;ProcessWait($PID) ;ждём появдение процеса
$Mem = MemGetStats($PID1) ;Узнаём о памяти процеса
MsgBox(0, 'PID', $Mem[5] / 1024 & ' Kб')

Все равно выдает либо объем физической памяти, либо не те значения.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Михаил [?]
Все равно выдает либо объем физической памяти, либо не те значения.
Те значения, которые показывает диспетчер задач мне удавалось получить только на Windows XP.
 
Верх