19th
Окт

Каким способом можно узнать объем оперативной памяти который занимает приложение?

Posted by Chas under Delphi, Пост-обзор

rpy3uH

procedure TForm1.Button1Click(Sender: TObject);
var
pmc: PPROCESS_MEMORY_COUNTERS;
cb: Integer;
begin
Memo1.Lines.Clear;
cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
GetMem(pmc, cb);
pmc^.cb := cb;
if GetProcessMemoryInfo(GetCurrentProcess(), pmc, cb) then
begin
Memo1.Lines.Add( FloatToStr(pmc^.WorkingSetSize/1024) + ' KB');
Memo1.Lines.Add( FloatToStr(pmc^.PagefileUsage/1024) + ' KB');
end;
FreeMem(pmc);
end;

PagefileUsage/1024 – ничто иное как поле «виртуальная память»
WorkingSetSize/1024 – очень близкое значение к полю «память»
(тестировалось на XP SP3)

а по большому счёту поле «виртуальная память» намного адекватнее отражает использование памяти программа. WorkingSetSize – это рабочий набор, сумма памяти занимаемой приложением и в user mode и в kernel mode, т.е. включая всю память отведённую для хранения информации о программе в системе (объект-процесс, объект-поток, хендлы и т.д.)

Пост написан при поддержке мебельной фабрики Мария. кухонная мебель Мария в Москве, Саратове и других регионах России.

тема на форуме

Похожие статьи