Delphi 释放内存
来源:互联网 发布:怎么制作mac系统u盘 编辑:程序博客网 时间:2024/04/28 10:26
方法一:如何利用Delphi释放所占的内存
有人写了一个清内存的bpl插件,据他讲用了以后Delphi2005只占3、4兆内存,多次编译后占用内存不会递增,其实这个bpl只有一个pas文件,这个文件里主要的就是一个函数,如有兴趣你看看:{2004.11.30wr960204 武稀松(王锐)}unit UnitMMSave;
interface
usesClasses, Windows, SysUtils, StrUtils, ExtCtrls, Forms,Dialogs;
implementation
constFrequency = 5000;//每隔五秒钟整理一次内存,速度很快的 :)varTimerID: Integer;InProc: Boolean;
procedure SaveMemory;beginif Win32Platform = VER_PLATFORM_WIN32_NT thenbegin //整理内存SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);end;end;
//定时器要执行的回调函数procedure HearBeatProc(Wnd: HWnd; Msg, Event, dwTime: Integer); stdcall;beginif (InProc = False) thenbeginInProc := True;trySaveMemory;finallyInProc := False;end;end;end;
initializationSetTimer(0, 0, Frequency, @HearBeatProc); //创建一个定时器finalizationKillTimer(0, TimerID);end.
方法二:用Delphi线程实现对内存的清理{*******************************************************}{ 清理内存线程 }{ Thtml }{ }{ Copyright (c) 2006 Inprise Corporation }{ 编写人:韩飞 }{ 编写日期:2006-09-28 }{ 更新日期:2006-10-21 13:21 }{*******************************************************}unit ClearMemoryThread;
interfaceuses Classes,SysUtils,Forms,Windows; type TClearMemory = Class(TThread) private
protected procedure Execute;Override; public Constructor Create(Suspended:Boolean);
end;implementation
procedure ClearMemory;//清理内存beginif Win32Platform = VER_PLATFORM_WIN32_NT thenbegin SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF); Application.ProcessMessages;end;end;Constructor TClearMemory.Create(Suspended:Boolean);//创建线程Begininherited Create(Suspended);FreeOnTerminate:=True;End;
Procedure TClearMemory.Execute;//线程启动beginClearMemory;End;
end.
调用如下:
procedure TfrmMain.Timer1Timer(Sender: TObject);varClearMemoryThread:TClearMemory;begin ClearMemoryThread := TClearMemory.Create(False);end;
方法三:DELPHI清理释放内存小代码
在WinXp,Win2K中应用此方法,不显示主窗体一直运行的程序最佳。以前程序占用11M内存,我用动态创建窗口的方法只能减少不到100K,应用此方法后内存占用只有496K。把下面的过程放到一个Timer中,每隔一段时间执行一次,如5秒。{************************************* Clear Memory* From Muse2008************************************}procedure ClearMemory;begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF); application.ProcessMessages; end;end;
- Delphi 释放内存
- Delphi内存释放
- Delphi函数--释放内存函数
- delphi 内存管理,定期释放
- Delphi Setlength 内存释放总结
- delphi申请和释放内存
- Delphi Setlength 内存释放总结
- delphi 精要-读书笔记(内存分配释放)
- DELPHI清理释放内存小代码
- DELPHI清理释放内存小代码
- delphi 精要-读书笔记(内存分配释放)
- delphi 精要-读书笔记(内存分配释放)
- Delphi中如何释放内存(转)
- delphi变量内存分配与释放
- delphi变量内存分配与释放
- delphi变量内存分配与释放
- Delphi中内存的动态分配与释放
- delphi 指针的内存分配和释放
- log4j使用(1)
- CSS position 属性
- JdbcTemplate学习笔记
- Extjs tree的相关组件及属性
- Extjs 设置控件 z-index 层次
- Delphi 释放内存
- 重建二叉树
- sql 2008评估期已过处理方案
- 老公与外面的朋友合伙做生意让自己很纠结
- oracle 手工创建Scott用户
- Extjs floating Panel 挡住 提示框或确认框的解决方法
- ByteArrayOutputStream用法
- 汤姆大叔深入理解JavaScript系列
- Extjs 双击关闭tab页