admin

[系统应用] delphi实时监视应用程序内存使用量

//----需要Uses PsAPI单元。---- www.delphitop.com

 

function GetProcessMemUse(PID: Cardinal): Cardinal;

var

pmc: PPROCESS_MEMORY_COUNTERS; //uses psApi

ProcHandle: HWND;

iSize: DWORD;

begin

Result := 0;

iSize := SizeOf(_PROCESS_MEMORY_COUNTERS);

GetMem(pmc, iSize);

try

pmc^.cb := iSize;

ProcHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,

False, PID); //由PID取得进程对象的句柄

if GetProcessMemoryInfo(ProcHandle, pmc, iSize) then

Result := pmc^.WorkingSetSize;

finally

FreeMem(pmc);

end;

end;

 

function GetCurrentMemUse: Cardinal;

begin

Result := GetProcessMemUse(GetCurrentProcessId);

end;

注:GetCurrentProcess返回进程句炳(只在此进程有效)

GetCurrentProcessID返回的进程的唯一标识(整个操作系统有效)


在使用的时候,可以在你的主窗体加一个TStatusbar,放一个TTimer用来实时显示内存使用量:



StatusBar.Panels[2].Text := format('memory use: %d KB', [GetCurrentMemUse div 1024]);//1kb=1024b


把代码放到你的程序里,看看你的代码有没有管理好内存。


#1楼
发帖时间:8月前   |   查看数:0   |   回复数:0
游客组