Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.09;
Скачать: CL | DM;

Вниз

Узнать объем памяти, который занимает процесс.   Найти похожие ветки 

 
Comwad ©   (2002-11-20 08:48) [0]

Кто подскажет, как приложение может узнать объем памяти, который оно занимает.
Типа как на закладке "Процессы" в Task Manager.
Спасибо.


 
Игорь Шевченко ©   (2002-11-20 10:15) [1]

VirtualQuery ?


 
Comwad ©   (2002-11-20 12:44) [2]

SI:TSystemInfo;
dd:SYSTEM_INFO;
var
mbi: TMemoryBasicInformation;
begin
GetSystemInfo(dd);
VirtualQuery( dd.lpMinimumApplicationAddress, mbi, SizeOf(mbi));

Полученные данные в MBI и вот эта структура:
typedef struct _MEMORY_BASIC_INFORMATION { // mbi
PVOID BaseAddress; // base address of region
PVOID AllocationBase; // allocation base address
DWORD AllocationProtect; // initial access protection
DWORD RegionSize; // size, in bytes, of region
DWORD State; // committed, reserved, free
DWORD Protect; // current access protection
DWORD Type; // type of pages

} MEMORY_BASIC_INFORMATION;
typedef MEMORY_BASIC_INFORMATION *PMEMORY_BASIC_INFORMATION;

Где можно увидеть занимаемую память этим процессом в байтах?
RegionSize всегда показывает 4096.


 
Marcus   (2002-11-20 16:40) [3]

GetProcessWorkingSetSize ?


 
Наезжалкин   (2002-11-20 16:52) [4]

HeapWalk(GetProcessHeap(),...)


 
cdaDMITRIY ©   (2002-11-20 19:20) [5]

Как узнать количество оперативки, занимаемое любым процессом ?
uses PsApi;
// ProcessID - PID (номер процесса)
procedure PrintMemoryInfo(ProcessID:DWORD);
var
hProcess : THANDLE;
pmc: PROCESS_MEMORY_COUNTERS;
begin
// Получаем дескриптор процесса для получения информации о нем
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, processID );

// Функция возвращает информацию о памяти, занимаемой процессом
if GetProcessMemoryInfo( hProcess, @pmc, sizeof(pmc))
then begin
minfo.Items.Clear;
minfo.Items.Add("Ошибок стр.: "+ FloatToStr(pmc.PageFaultCount));
minfo.Items.Add("Макс. использ. памяти (Kb): "+ FloatToStr(pmc.PeakWorkingSetSize/1024));
minfo.Items.Add("Выгружаемый пул (макс.): "+ FloatToStr(pmc.QuotaPeakPagedPoolUsage));
minfo.Items.Add("Выгружаемый пул : "+ FloatToStr(pmc.QuotaPagedPoolUsage));
minfo.Items.Add("Невыгруж. пул (макс.): "+ FloatToStr(pmc.QuotaPeakNonPagedPoolUsage) );
minfo.Items.Add("Невыгруж. пул : "+ FloatToStr(pmc.QuotaNonPagedPoolUsage) );
minfo.Items.Add("Вирт. память (Kb): "+ FloatToStr(pmc.PagefileUsage/1024));
minfo.Items.Add("Макс. вирт. память (Kb): "+ FloatToStr(pmc.PeakPagefileUsage/1024));
minfo.Items.Add("Память (Kb): " + FloatToStr(pmc.WorkingSetSize/1024))
end;
// Закрываем дескриптор
CloseHandle( hProcess );
end;




Страницы: 1 вся ветка

Текущий архив: 2003.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
7-25111
vidiv
2002-10-15 14:34
2003.01.09
MultiCast для NMUPD


14-25097
111
2002-12-21 22:04
2003.01.09
Картинки


14-25025
p77
2002-12-19 19:34
2003.01.09
Сдох винт...


1-24832
smok_er
2002-12-27 10:53
2003.01.09
Типизированный файл - замена БД


3-24779
Bocman
2002-12-15 23:27
2003.01.09
Две записи вместо одной