如何利用Delphi釋放所占的內(nèi)存
有人寫了一個(gè)清內(nèi)存的bpl插件,據(jù)他講用了以后Delphi2005只占3、4兆內(nèi)存,多次編譯后占用內(nèi)存不會(huì)遞增,其實(shí)這個(gè)bpl只有一個(gè)pas文件,這個(gè)文件里主要的就是一個(gè)函數(shù),如有興趣你看看:
{
2004.11.30
wr960204 武稀松(王銳)
}
unit UnitMMSave;
interface
uses
Classes, Windows, SysUtils, StrUtils, ExtCtrls, Forms,
Dialogs;
implementation
const
Frequency = 5000;//每隔五秒鐘整理一次內(nèi)存,速度很快的 :)
var
TimerID: Integer;
InProc: Boolean;
procedure SaveMemory;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin //整理內(nèi)存
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;
end;
//定時(shí)器要執(zhí)行的回調(diào)函數(shù)
procedure HearBeatProc(Wnd: HWnd; Msg, Event, dwTime: Integer); stdcall;
begin
if (InProc = False) then
begin
InProc := True;
try
SaveMemory;
finally
InProc := False;
end;
end;
end;
initialization
SetTimer(0, 0, Frequency, @HearBeatProc); //創(chuàng)建一個(gè)定時(shí)器
finalization
KillTimer(0, TimerID);
end.