Borland Delphi 7 FastMM RTL 补丁: --------------------------------- =^0^= 发布者: ------- Lsuper @ DelphiBBS 任何问题,欢迎到 DelphiBBS 提出 ... http://www.delphibbs.com/delphibbs/dispq.asp?lid=3373649 说明: ----- 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、修改 Move、FillChar 为 Delphi 2006 的 System.pas 中的实现 4、所有操作在中文版 Windows XP sp2 + Delphi 7 下完全测试通过 使用: ----- 1、运行 RTL\Make.bat,编译出 Dcu 文件 2、运行 RELEASE\Copy.bat,他会复制文件到相应文件夹 3、如果想恢复原始文件,运行 BACKUP\Restore.bat 注意:如果你的 Delphi 没有安装在默认路径(C:\Program Files\Borland\Delphi7),请修改 bat 中相应的路径 文件: ----- RTL 文件夹 Delphi 7 RTL 替换文件 BACKUP 文件夹 Delphi 7 RTL 备份文件 DEMO 文件夹 一个测试例子。注意:例子中在 Dll 和 Exe 之间传递 string 而不需要引用任何的 ShareMem 或 FastMM! |