P
PowerDelphi
Unregistered / Unconfirmed
GUEST, unregistred user!
我有一段程序不知错在什么地方,我在implementation部分声明了如下类型:
type
;TProcessInfo=Record
; ; ExeFile:string;
; ; ProcessIDWORD;
;end;
;PProcessInfo=^TProcessInfo;
然后有以下过程:
procedure TForm1.Timer1Timer(Sender: TObject);//Timer1.interval:=1000
var
;pProcessInfo;
;i:integer;
;ContinueLoop:Boolean;
;FSnapshotHandle:THandle;
;FProcessEntry32:TProcessEntry32;
;hh:HWND;
begin
;FSnapshotHandle:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
;FProcessEntry32.dwSize :=SizeOf(FProcessEntry32);
;ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
;while integer(ContinueLoop)<>0 do
;begin
; ;new(p);
; ;p.ExeFile :=FProcessEntry32.szExeFile ;
; ;i:=checklistbox1.Items.IndexOf(lowercase(extractfilename(p.ExeFile)));
; ;if i>=0 then
; ;begin
; ; ;p.ProcessID :=FProcessEntry32.th32ProcessID ;
; ; ;hh:=OpenProcess(PROCESS_ALL_ACCESS,true,p.ProcessID);
; ; ;TerminateProcess(hh,0);
; ; ;application.MessageBox ('此程序被禁止在本机运行,请与管理员联系!','禁止运行 ; ; ; ; ; ; ; ; ; ; ; ',MB_ICONINFORMATION+MB_OK);
; ;end;
; Dispose(p);
; ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
;end;
end;
这个程序运行达到了我的目的:根据程序来关闭要想关闭的程序,但是一个非常严重的问题产生了:内存的使用太惊人了。开始我运行这个程序前可用物理内存是
116MB(RamIdle测得),这是退出RamIdle改用WindowsMe自带的“系统监视器”继续监测可用物理内存,大约5分钟过后,可用物理内存变为91.2MB,这时退出这个程序,可用物理内存又突增至116MB(系统监视器测得),过一会儿后又增至116.2MB后来一直稳定在116MB这个水平没有变化。我明明是new(p)后又Dispose(p)不知我错在什么地方,怎样才能避免这种情况,请大侠们指点迷津。不盛感激!!!
type
;TProcessInfo=Record
; ; ExeFile:string;
; ; ProcessIDWORD;
;end;
;PProcessInfo=^TProcessInfo;
然后有以下过程:
procedure TForm1.Timer1Timer(Sender: TObject);//Timer1.interval:=1000
var
;pProcessInfo;
;i:integer;
;ContinueLoop:Boolean;
;FSnapshotHandle:THandle;
;FProcessEntry32:TProcessEntry32;
;hh:HWND;
begin
;FSnapshotHandle:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
;FProcessEntry32.dwSize :=SizeOf(FProcessEntry32);
;ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
;while integer(ContinueLoop)<>0 do
;begin
; ;new(p);
; ;p.ExeFile :=FProcessEntry32.szExeFile ;
; ;i:=checklistbox1.Items.IndexOf(lowercase(extractfilename(p.ExeFile)));
; ;if i>=0 then
; ;begin
; ; ;p.ProcessID :=FProcessEntry32.th32ProcessID ;
; ; ;hh:=OpenProcess(PROCESS_ALL_ACCESS,true,p.ProcessID);
; ; ;TerminateProcess(hh,0);
; ; ;application.MessageBox ('此程序被禁止在本机运行,请与管理员联系!','禁止运行 ; ; ; ; ; ; ; ; ; ; ; ',MB_ICONINFORMATION+MB_OK);
; ;end;
; Dispose(p);
; ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
;end;
end;
这个程序运行达到了我的目的:根据程序来关闭要想关闭的程序,但是一个非常严重的问题产生了:内存的使用太惊人了。开始我运行这个程序前可用物理内存是
116MB(RamIdle测得),这是退出RamIdle改用WindowsMe自带的“系统监视器”继续监测可用物理内存,大约5分钟过后,可用物理内存变为91.2MB,这时退出这个程序,可用物理内存又突增至116MB(系统监视器测得),过一会儿后又增至116.2MB后来一直稳定在116MB这个水平没有变化。我明明是new(p)后又Dispose(p)不知我错在什么地方,怎样才能避免这种情况,请大侠们指点迷津。不盛感激!!!