有人写了一个清内存的bpl插件,据他讲用了以后delphi2005只占3、4兆内存,多次编译后占用内存不会递增,其实这个bpl只有一个pas文件,这个文件里主要的就是一个函数,如有兴趣你看看:
{
2004.11.30
wr960204 武稀松(王锐)
}
unit unitmmsave;
interface
uses
classes, windows, sysutils, strutils, extctrls, forms,
dialogs;
implementation
const
frequency = 5000;//每隔五秒钟整理一次内存,速度很快的 :)
var
timerid: integer;
inproc: boolean;
procedure savememory;
begin
if win32platform = ver_platform_win32_nt then
begin //整理内存
setprocessworkingsetsize(getcurrentprocess, $ffffffff, $ffffffff);
end;
end;
//定时器要执行的回调函数
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); //创建一个定时器
finalization
killtimer(0, timerid);
end.
听你这么说,我也用delphi for win32新建了一个package,新建一个unit,把代码拷进去,编译,安装。编译了一下demos里的delphi for win32和c#的 webservices工程,也编译了一下其它类型的工程,发现bds.exe(delphi2005的编译器?)进程占用的内存能减少并维持在3兆到8兆之间。不过在bds.exe占用内存降下来了以后,windows任务管理器里面的内存使用总数却没有显示减少。是操作系统的问题还是.net垃圾收集器或者delphi2005编译器的bug 我才疏学浅就不清楚了。