http://blog.csdn.net/akof1314/article/details/6524767html
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},此項默認開啓。ui
FastCode爲Delphi社區提供高度優化的函數,此函數比Delphi運行時庫函數、VCL函數以及它們的擴展函數更快。FastMove替換全部的system.move調用,由於它有更快的速度。spa
使用方法:
解壓以後,將FastMove放到FastCode文件夾下,這樣就只需引用一個環境路徑,將".../FastCode"添加到"Environment Options"下的"Library"中。而後再在具體項目工程中,在菜單欄→"Project"→"View Source"下,將"FastCode.pas"和"FastMove.pas"單元添加到"uses"下的第一個位置,以下所示:.net
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