FastMM FastCode FastMove的使用
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
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
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
FastMM FastCode FastMove的使用相关推荐
- Delphi7 内存管理及 FastMM 研究 (对于EXE和DLL内存共享很有用) .
[转] Delphi7 内存管理及 FastMM 研究 (对于EXE和DLL内存共享很有用) 故国之晚秋 发表于2010-12-06 19:34 浏览(32) 评论(0) 分类: 我的日记 ...
- [转] Delphi7 内存管理及 FastMM 研究
Delphi7 内存管理及 FastMM 研究[转] 作者:刘国辉 一.引言 FastMM 是适用于delphi的第三方内存管理器,在国外已经是大名鼎鼎,在国内也有许多人在使用或者希望使用 ...
- oracle oid查询 视图,OID View
非正规方法处理AngulurJS模块管理问题 1.起因 自己一直做winform,有幸从某个大神手里接了一个node.js,express,angulurJS等集众多开源框架的一个项目,赶鸭子上架,于 ...
- 我常去的编程技术网站[最近更新:2010.09.29]
[序言] 其实大家都可以成为一个厉害的软件开发人员,希望大家通过了解我提供的这些网站找到自己的兴趣爱好,以增强自己的信心. [建议] 为了能让更多的朋友看到此链接,如果大家是csdn用户,那么请选 ...
- Delphi 汇编学习(八)--- 图像水平镜像垂直镜像的极致优化
一:水平镜像/翻转 将一幅图像水平镜像/翻转,代码很简单,就一行代码: procedure HorizMirror(bmp: TBitmap); beginbmp.Canvas.Copy ...
- delphi 控件大全(确实很全)
delphi 控件查询:Torry's Delphi Pages http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar)控件库,仿Office97,如TDoCk ...
- delphi 控件大全
delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar)控件库,仿Office97,如TDoC ...
- Windows平台三大软件开发工具Delphi、WPF .NET Framework和Electron开发对比综述
Embarcadero委托白皮书研究了Delphi,WPF .NET Framework和Electron之间用于构建Windows桌面应用程序的区别.由三个Delphi最有价值专家(MVP)志愿者, ...
- Delphi优秀免费资源
1.FastMM 主页:http://fastmm.sf.net Delphi 2006 中一个重要的更新就是使用开源内存管理器 FastMM 替调了使用了 N 年的老内存 管理器. Fast ...
最新文章
- Hibernate复习之Hibernate基本介绍
- 服务器返回的json数据,通过本地解析调用SBjson的类
- ubuntu 13.04 gnome terminal打开默认最大化方法
- Backbone React Requirejs 应用实战(一)——RequireJS管理React依赖
- 邮件发送代码--网易服务器代理
- 从无监督构建词库看「最小熵原理」,套路是如何炼成的
- phpcms前台注入导致任意文件读取漏洞
- 好系统教你如何在Windows中更改文件夹的图标
- PhoneGap插件开发实例
- java 计算器 下载_那里可以下载到JAVA编的计算器程序??
- 微课有关计算机应用基础,【计算机仿真论文】微课在计算机应用基础课的应用(共3802字)...
- python和java那个更难_python难还是java难
- GUI制作信号分析的频域和时域分析
- 【手工儿童】}DIY冬南瓜小兔子
- 用 Adobe 设置 PDF 文件在文件管理器右侧预览窗格预览
- K8s 多节点部署流程
- Migrando电子商务可以实现Iluria para o Shopify(Python的标准)
- 员工转正申请书_简短的员工转正申请书范文6篇
- threejs:流光效果封装
- VB.NET语法基础学习
热门文章
- java反射随意值_Java反射总结
- 【C语言】用指针描述数组,实现选择法排序
- the next generation block styled editor -- eidtor.js
- jemter的竞品分析
- 广州 智播客 学工部_播客:30岁的水管工如何转变职业并成为全职开发人员
- 打破双亲委派么,怎么打破_打破它。 然后告诉我们您是如何打破它的。
- 杭电oj 1000 c++ 版本
- python双划线_Python中单下划线(_)和双下划线(__)的特殊用法
- 赶在520之前,程序员如何用Python送上最特别的“我爱你”表白
- Flask框架——路由和视图