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界面比较快捷,但是往往这样的界面相对单调一些,特别在界面控件比较少的情况下,我们往往需要加入一些 ...
随机推荐
- python 代码片段14
#coding=utf-8 #enumerate是一个内置函数 data=(123,'abc',3.14) for i,value in enumerate(data): print i,value
- Extjs3.3 + swfUpload2.2 实现多文件上传组件
[该上传组件已经停止更新,该上传组件已经在项目中使用.在使用过程中如果发现bug请大家回复此贴.2011-02-27] 主要是为了用swfUpload实现上传,为了新鲜好玩. 理解swfUpload可 ...
- BZOJ3329 : Xorequ
第一问: 打表可得规律:当且仅当x&(x<<1)=0时才会是解,于是数位DP f[i][j][k]表示二进制中前i位,上一位是j,前i位是否等于n的方案数 第二问: 打表可得规律: ...
- <!--[if IE]>….<![endif]--> (<!--[if !IE]>||<![endif]-->)的用法
1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> 2. <!--[if IE]> 所有的IE可识别 ...
- iOS移动开发周报-第24期
iOS移动开发周报-第24期 [摘要]:本期iOS移动开发周报带来如下内容:苹果更新了iTunes Connect的设计.UIKit Dynamics 教程:抛掷 Views.iOS APP 架构漫谈 ...
- Shortcut 常用快捷键
多行注释: VS2010: / NotePad++: Ctrl Q Xcode: CMMND / 回到光标所在之前位置 VS2010: Ctrl +/- 关闭当前页: VS2010: 鼠标中 ...
- android开发事件监听
第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适, ...
- windows实时操作系统
最近一个项目需要用windows进行实时定时操作以实现同步功能(12ms),不过由于windows是分时系统,其可供用户使用的定时器误差较大. 通过查找发现了一个ardence公司开发的一个叫做RTX ...
- HDU 1044 Collect More Jewels(BFS+DFS)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- nodejs:本地文件夹http服务器http-server
一.已经安装nodejs的电脑,有一个方便通过http访问本地文件夹.文件夹服务器 static files over HTTP,并不是我们平常说的node那个web服务器哦 二.好处 可以方便实现跨 ...