Главная страница
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.009 c
4-25156
rybochkin
2002-11-20 20:41
2003.01.09
Чужое окно


14-25077
Viktor Kushnir
2002-12-21 09:12
2003.01.09
Опять тот же вопрос, но


3-24804
Botcha
2002-12-16 22:02
2003.01.09
Win95 + ADO


4-25131
Comwad
2002-11-20 08:48
2003.01.09
Узнать объем памяти, который занимает процесс.


1-24877
dimonf
2002-12-28 11:41
2003.01.09
Как програмно вызвать OnKeyDown?