引述:about 優化 Delphi2005 Update2

有人开发了清内存的bpl插件,该插件的pas文件含主要函数。测试者用Delphi for win32新建Package和Unit并拷入代码编译安装,编译不同工程后,bds.exe进程占用内存能减至3 - 8兆,但Windows任务管理器内存总数未显示减少,原因不明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from: http://forum.vclxx.org/topic.asp?TOPIC_ID=30282&FORUM_ID=40&CAT_ID=7&Topic_Title=Delphi+2005+Update2&Forum_Title=%A7%F5%BA%FB%C5%AA%AA%CC%B1M%B0%CF

 

有人写了一个清内存的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 我才疏学浅就不清楚了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值