盒子资源分类
Borland Delphi 7 FastMM RTL 补丁 v1.1
关键字:Delphi7 FastMM RTL 补丁 内存管理器
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003
下载所需:0 火柴
深浅度:中级
完成时间:2006/3/12
发布者:Lsuper
发布时间:2006/3/12
编辑器:DELPHI7
语 种:简体中文
分 类:开发
下载浏览:1226/14521
Borland Delphi 7 FastMM RTL 补丁: ---------- 任何问题,欢迎到 DelphiBBS 提出 ... http://www.delphibbs.com/delphibbs/dispq.asp?lid=3373649 版本: ----- 2006.03.12 v1.1 历史: ----- 2006.03.12 v1.1 1、修正 Exe 和 Dll 之间没有共享内存管理器的问题(Delphi 2006 是通过第一个引用 SimpleShareMem.pas 单元实现的)。 2、测试例子中加入内存检测选项(注意,例子是只在 Delphi IDE 下提示内存泄漏,独立运行没有提示) 2006.03.06 v1.0 1、首次发布 说明: ----- Delphi 2006 中一个重要的更新就是使用开源内存管理器 FastMM 替调了使用了 N 年的老内存管理器。 FastMM 在外国 Delphi 社区非常有名,其主要目的就是重新实现一个高效、安全、稳定的内存管理器(Borland 的内存管理器问题多多,如 Dll 和 Exe 间无法共享,多线程下效率底--一些情况下甚至于低一个数量级!),在代号为 Dexter 的 Delphi 2006 没 release 之前已经听李维大肆鼓吹说 Dexter 如何出色,还在 CSDN 上说他 Demo 证明 FastMM 在 Delphi 和 BCB 下能提高 NNN% 的效率! FastMM 的主页: http://fastmm.sourceforge.net 相对旧内存管理器,FastMM 有诸多的优点: 1、彻底实现了 Borland 的内存管理器,可以完全取代现有的内存管理器(“取代”就是第一个 uses FastMM4,that is all ...) 2、实现了内存管理器共享机制,Exe 和 Dll 间共享内存管理器不需要任何 Dll 支持 3、集成了内存泄漏检测功能 4、充分兼容现有的代码、Delphi 旧内存管理器模式 5、为了加速 Delphi IDE(如 Delphi 5/6/7、Delphi 2005)的启动速度、管理内存占用等,他提供了 BorlndMM.dll 的替代,直接替换 Bin 中的 Dll 即可! 如果想在 Delphi 7 下使用,最最简单的方法当然是在 dpr 中第一个 uses FastMM4 既然在 Delphi 2006 中的内存管理器如此之棒,一个非常自然的想法:能不能把 Delphi 2006 中的新内存管理器完全移植到 Delphi 7 下? 修改: ----- 通过 UltraEdit 和 WinMerge 等大量搜索、对比 Delphi 7(Version 7 Build 8.1) 和 Delphi 2006(Version 10.0.2166.28377),发现其实移植的工作量没有想象中的复杂 :> 主要有:修改 System.pas 中的内存管理函数;GetMem.inc 的完全替代!附带的,由于 Delphi 2006 中的 Move 和 FillChar 函数使用的是开源 FastCode 更具效率的实现,“顺手牵羊”了一把 n_n ... 1、使用 Delphi 7(Version 7 Build 8.1)的 System.pas 作为原本 2、使用的内存管理器完全替换为 Delphi 2006 的内存管理器(GetMem.inc/System.pas) 3、加入内存管理器共享 4、修改 Move、FillChar 为 Delphi 2006 的 System.pas 中的实现 5、所有操作在中文版 Windows XP sp2 + Delphi 7 下完全测试通过 使用: ----- 1、运行 RTL\Replace.bat,会编译出所有的 Dcu 文件,并复制到相应文件夹 2、如果想恢复原始文件,运行 BACKUP\Restore.bat 3、最后发布的 Dll 和 Exe 不需要附带额外的 borlandMM.dll 注意:如果你的 Delphi 没有安装在默认路径(C:\Program Files\Borland\Delphi7),请修改 bat 中相应的路径 文件: ----- RTL 文件夹 Delphi 7 RTL 替换文件 BACKUP 文件夹 Delphi 7 RTL 备份文件 DEMO 文件夹 一个测试例子 注意:例子中在 Dll 和 Exe 之间传递 string 而不需要引用任何的 ShareMem 或 FastMM 或 SimpleShareMem!
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们 !
相关文章
相关评论
共有评论10条
当前显示最后6条评论
lsuper
2006/3/14 19:41:20
谁说需要“将整个 VCL 重新编译一次”? 使用这个 patch:rtl\replace.bat 不使用这个 patch:backup\restore.bat that's all ...
dlp
2006/3/15 10:36:37
只要是编译过的东东在没有delphi的机不能运行。。。 应该不会有这个问题! 是不是你编译的哪个Project的Options的Packages中选择了 Build with Runtime Packages
register
2006/3/17 8:56:53
希望继续讨论的请到QQ群组里来: 17523790 , 请求验证时请说明:FastMM 或 DFW 或 Delphi
fly_phoenix
2006/3/17 11:17:39
运行这段程序,比原来快50%,fastmm的确是好东西,但还有些问题 procedure TForm1.Button1Click(Sender: TObject); var t: TDateTime; I: Integer; pData: Pointer; begin t := Now; for I := 1 to 1000000 do try GetMem(pData, I); finally FreeMem(pData); end; ShowMessage(FormatFloat('0.00', 24 * 60 * 60 * (Now -t))); end; 2000下运行没问题 在win98下运行提示: The memory manager cannot be changed after it has been used 看来还得改啊
lsuper
2006/3/18 16:27:51
非常感谢反馈!98 的问题已经修改,重新发布 1.2 的了 ;>
limin
2006/3/27 19:57:36
很好,支持.
我要发表评论
查看全部评论