FastMM、FastCode、FastMove的使用(图文并茂)
FastMM是一个替换Embarcadero Delphi Win32应用程序的快速内存管理器,以及可以在多线程下使用,不容易产生内存碎片,并且无需使用外部DLL文件就可以支持共享内存。
使用方法:
1.对IDE加速
解压之后,文件夹".../FastMM/Replacement BorlndMM DLL/Delphi/Precompiled/for Delphi IDE/Performance"下的"BorlndMM.dll"拷贝到Delphi安装目录下的".../Borland/Delphi7/Bin"进行覆盖安装(最好先备份下)。
2.对应用程序加速
打开Delphi IDE,将文件夹".../FastMM"添加到"Environment Options"下的"Library"中。然后再在具体项目工程中,在菜单栏→"Project"→"View Source"下,将"FastMM4.pas"单元添加到"uses"下的第一个位置。若需要内存报告消息为中文的话,将文件".../FastMM/Translations/Chinese (Simplified)/FastMM4Messages.pas"替换文件".../FastMM/FastMM4Messages.pas"即可。
下面测试内存泄露报告:
1)新建一个Delphi应用程序,在工程文件将"FastMM4.pas"单元添加到"uses"下的第一个位置;
2)添加一个按钮,按钮单击事件如下:
| 1 2 3 4 5 6 |
procedure TForm1.btn1Click(Sender: TObject); var sl: TStrings; begin sl := TStringList.Create; end; |
3)运行程序,单击按钮,退出程序,观察结果如下图所示:
从上面可以看到有报告内存泄露,并且提示TStringList.泄露,提醒要得到详细的内存泄露信息,需开启"FullDebugMode"和"LogMemoryLeakDetailToFile"条件编译开关。打开文件".../FastMM/FastMM4Options.inc",在文件末尾添加以下代码:
| {快速配置发布版本和调试版本} {$ifdef Release} {发布版本请设置} {$undef FullDebugMode} {$undef CheckHeapForCorruption} {$define ASMVersion} {$undef EnableMemoryLeakReporting} {$undef UseOutputDebugString} {$else} {调试版本请设置} {$define FullDebugMode} {$define EnableMemoryLeakReporting} {$define UseOutputDebugString} {$endif} |
再将文件".../FastMM/FullDebugMode DLL/Precompiled/FastMM_FullDebugMode.dll"拷贝到工程可执行程序目录下,运行程序,单击按钮,观察结果如下图所示:
在工程目录下有日志文件"Project1_MemoryManager_EventLog.txt"记录内存泄露详细信息,如下图所示:
若是发布版本的话,关闭调试模式,在菜单栏→"Project"→"Options"→"Directories/Conditionals"→"Conditionals"下,定义一个条件编译"Release",如下图所示:
再次运行程序,单击按钮,观察结果,已经无内存泄露报告提示框了。注意以上仅在IDE中调试程序有检查内存泄露,若是要在脱离IDE运行程序也检测内存泄露,请关闭选项 {$define RequireDebuggerPresenceForLeakReporting},此项默认开启。
FastCode为Delphi社区提供高度优化的函数,此函数比Delphi运行时库函数、VCL函数以及它们的扩展函数更快。FastMove替换所有的system.move调用,因为它有更快的速度。
使用方法:
解压之后,将FastMove放到FastCode文件夹下,这样就只需引用一个环境路径,将".../FastCode"添加到"Environment Options"下的"Library"中。然后再在具体项目工程中,在菜单栏→"Project"→"View Source"下,将"FastCode.pas"和"FastMove.pas"单元添加到"uses"下的第一个位置,如下所示:
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 |
program Project1; uses FastMM4, {假如有FastMM的话,放在第一个位置} FastCode, FastMove, Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
若是FastMM和FastMove同时使用的话,需要禁用其中一个条件编译,打开文件".../FastMM/FastMM4Options.inc",按Ctrl+F寻找字符串"$define UseCustomVariableSizeMoveRoutines",找到之后将此行改为如下:
| {.$define UseCustomVariableSizeMoveRoutines} |
使用FastMove代码可以使整个程序都使用到更快的内存移动函数而不仅仅是内存管理器。因此建议将FastMM和FastMove代码相结合,并关闭此选项。
FastMM、FastCode、FastMove打包下载:http://download.csdn.net/source/3337016
扩展资料:
1.Delphi中使用FastMM4结合View CPU避免内存泄漏 http://www.cnblogs.com/kongchao/archive/2009/10/27/1590479.html
2.FastMM使用详解 http://blog.csdn.net/shuaihj/archive/2011/03/17/6256723.aspx
http://blog.csdn.net/akof1314/article/details/6524767
FastMM、FastCode、FastMove的使用(图文并茂)的更多相关文章
- FASTMM,FASTCODE,FASTMOVE请移步
http://blog.csdn.net/akof1314/article/details/6524767
- [转] FastMM、FastCode、FastMove的使用
http://blog.csdn.net/akof1314/article/details/6524767 FastMM是一个替换Embarcadero Delphi Win32应用程序的快速内存管理 ...
- FastMM配置文件详解
FastMM最新版本提供了中文语言包,可方便国内使用.下载地址为 http://sourceforge.net/projects/fastmm/ 配置文件为:FastMM4Options.inc, 中 ...
- FastMM内存泄露
转自:http://www.2ccc.com/article.asp?articleid=4879FastMM是非常优秀的内存管理器,但是从FastMM4Options.inc中找到合适自已程序的选项 ...
- Delphi7 中使用FastMM 转载
http://blog.csdn.net/cai5/article/details/17142697 Delphi7 中使用FastMM 在工程的第一行引用FastMM4即可(注意,一定要在第一个Us ...
- FastMM、FastCode、FastMove的使用(详细讲解了怎么安装与使用)good
http://blog.csdn.net/akof1314/article/details/6524767
- 移动端webapp自适应实践(css雪碧图制作小工具实践)图文并茂
为什么要写这个 以前写过关于webapp自适应屏幕的文章(链接),不过写的大多数群众看不懂,所以来个图文并茂的版本.虽然只是一个简单的页面,不过在做的过程中也遇到了一些问题,也算是好事吧! 该示例gi ...
- 如何利用word2013写图文并茂的博客
我有一天心血来潮,突然想写博客了,由于是技术贴,图文并茂,多图预警,可是在新浪博客,网易博客,博客园这些博客上写技术贴,似乎都不支持从已经写好的word文档里粘贴过去,于是各种百度各种尝试各种摸索 ...
- 如何在Winform界面中设计图文并茂的界面
在Winform里面,很多控件元素都是标准的,如图标.按钮.工具栏等等,所以一般设计标准的Winform界面比较快捷,但是往往这样的界面相对单调一些,特别在界面控件比较少的情况下,我们往往需要加入一些 ...
随机推荐
- TODO:C# Socket
http://www.cnblogs.com/licongjie/archive/2006/10/26/540640.html http://blog.csdn.net/ZOU_SEAFARER/ar ...
- ubuntu apt源
deb http://archive.ubuntu.com/ubuntu/ vivid main restricted universe multiversedeb http://archive.ub ...
- 8.0 Qweb 报表编写步骤
8.0 采用的是Qweb报表,摒弃了7.0中的RML报表. 1.首先在xml文件中注册一个报表: <report id="qweb_test_report" model=&q ...
- C# 从数据库中删除,插入,修改 索引选中条目
一.删除 1. ) { var currentSelectIndex = usrListView.SelectedIndex; var item = usrView[currentSelectInde ...
- 利用onekeyup即可实现验证码的点击刷新功能
显示验证码 首先在Home/Controller下创建一个公共控制器PublicController 1 <php2 namespace Home\Controller;3 4 use Thin ...
- filesize返回的是以字节为单位的数据也可以使之处理数字
1.文件的属性信息获取 首先文件具有类型,在linux下边,有block(块设备,如磁盘分区.CD-ROM).char(以字符为输入的设备,如键盘.打印机).dir(目录类型,目录也是文件的一种).f ...
- 一个Java方法覆盖的小问题
class SuperClass{ public SuperClass() { System.out.println("superclass "); show(); } publi ...
- Eclipse学习记录
设置背景色:http://jingyan.baidu.com/article/2a138328b5d9ea074a134fc7.html 项目文件说明:http://www.cnblogs.com/p ...
- maven常用插件总结
maven本质上是一个插件框架,几乎所有的功能都是通过各种各样的插件来实现的.maven默认会依据项目类型自动把构建时的各阶段(Lifecycle和phase)自动绑定(Lifecycle Mappi ...
- 【IOS笔记】Resource Management in View Controllers
Resource Management in View Controllers 视图控制器的资源管理 View controllers are an essential part of managin ...