- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
delphi 创建自己的定时器 定时清理内存
下面这个例子就是自定义时间清理内存空间。
unit TrimWorkingSet;
interface
implementation
uses
SysUtils, Windows, ExtCtrls;
type
TTrimmer = class(TTimer) //继承自TTimer定时器类
public
procedure TimerTick(Sender: TObject);
end;
procedure TTrimmer.TimerTick(Sender: TObject);
var
CurrentPID, FocusedPID: THandle;
begin
CurrentPID := GetCurrentProcessId;//获取当前进程ID
GetWindowThreadProcessId(GetForegroundWindow, @FocusedPID);//获取顶层窗口进程ID
if (Win32Platform = VER_PLATFORM_WIN32_NT) and //是否运行在windows NT类系统
(CurrentPID <> FocusedPID) then //并且顶层窗口进程不为当前进程时进行内存整理
SetProcessWorkingSetSize(CurrentPID, Cardinal(-1), Cardinal(-1) );
end;
var
Timer: TTrimmer;
initialization
Timer := TTrimmer.Create(nil);
Timer.Interval := 30000;//每半分钟定时检测
Timer.OnTimer := Timer.TimerTick;
finalization
if Assigned(Timer) then
Timer.Free;
end.