1. 程式人生 > >fastmm4中文翻譯

fastmm4中文翻譯

tran imp 這一 lee 就是 時間片 term ID 禁用

FastMM是非常優秀的內存管理器,但是從FastMM4Options.inc中找到合適自已程序的選項設置免不了一頓英文的糾纏,所以我把這個文件裏的所有英文註釋都翻譯成了中文。如果你發現有任何翻譯不恰當的地方,直接進行修改就可以了。呵呵,給FastMM作者寫了封郵件,這個文件也會被包含在下一個FastMM版本中。
如果你不願意下載,直接把下面內容復制到FastMM4Options.inc文件裏並覆蓋原文件內容即可。下面是對最新的FastMM4.84版本的翻譯,之前的版本可以參考對照。

{

Fast Memory Manager: 選項配置文件

在這裏為FastMM設置默認選項

FastMM 4.84

}

{
Simplified Chinese translation by QianYuan Wang

Contact me if you find any improper translation.
如果翻譯上有任何不恰當的地方請和我聯系。

E-Mail: [email protected]
}

{
對各編譯選項的翻譯(不解釋術語)

Align16Bytes 按16字節對齊
UseCustomFixedSizeMoveRoutines 使用固定尺寸內存移動函數
UseCustomVariableSizeMoveRoutines 使用可變尺寸內存移動函數
AssumeMultiThreaded 按多線程處理
NeverSleepOnThreadContention 線程沖突時不暫停進程
InstallOnlyIfRunningInIDE 僅在Delphi開發環境中加載內存管理器
NeverUninstall 不卸載FastMM
UseRuntimePackages 使用運行期包

NoDebugInfo 無調試信息
NoMessageBoxes 不顯示信息
UseOutputDebugString 使用Windows API OutputDebugString
ASMVersion 匯編版本
CheckHeapForCorruption 檢測堆錯誤
DetectMMOperationsAfterUninstall 檢測在管理器卸載後對其的引用操作
FullDebugMode 全調試模式
RawStackTraces 徹底的棧追蹤
CatchUseOfFreedInterfaces 捕捉對已銷毀對象的引用
LogErrorsToFile 記錄錯誤到文件
LogMemoryLeakDetailToFile 記錄內存泄露細節到文件
ClearLogFileOnStartup 啟動時清空日誌文件
LoadDebugDLLDynamically 動態加載調試Dll
AlwaysAllocateTopDown 總從最頂端分配內存

EnableMemoryLeakReporting 允許內存泄露報告
HideExpectedLeaksRegisteredByPointer 隱藏由指針記錄的可能的內存泄露
RequireIDEPresenceForLeakReporting 僅在IDE存在時進行泄露報告
RequireDebuggerPresenceForLeakReporting 僅在調試器存在時進行泄露報告
RequireDebugInfoForLeakReporting 泄露報告需要調試信息
ManualLeakReportingControl 手工控制泄露報告
HideMemoryLeakHintMessage 隱藏內存泄露提示信息

EnableMMX 允許使用MMX
ForceMMX 強制使用MMX

ShareMM 共享內存管理器
ShareMMIfLibrary 允許在Dll中共享內存管理器
AttemptToUseSharedMM 嘗試共享內存管理器
EnableBackwardCompatibleMMSharing 允許向後兼容的內存管理器共享

FullDebugModeInIDE 在Delphi開發環境中進行全調試
}

{---------- 綜合選項 ----------}

{開啟此選項會將所有內存塊按16字節對齊以便SSE指令可以安全使用。如果此選項關閉,一些
最小的內存塊會按8字節方式對齊,這將減少內存使用。不管是否開啟此選項,中等和大的內
存塊都將按照16字節方式對齊。}
{.$define Align16Bytes}

{允許在增大小內存塊時使用更快的定尺寸內存移動函數。因為這些函數被設計為移動固定尺寸
內存,所以效率大幅高於Borland的RTL中的內存移動函數。這一選項可與FastMove庫配合使用
來達到更高的效率。}
{$define UseCustomFixedSizeMoveRoutines}

{開啟此選項以使用優化的函數來移動任意大小的內存塊。使用Fastcode的FastMove函數時禁用
此選項。使用FastMove代碼可以使整個程序都使用到更快的內存移動函數而不僅僅是內存管理
器。因此建議將FastMM和FastMove代碼相結合,並關閉此選項。}
{$define UseCustomVariableSizeMoveRoutines}

{開啟後將默認程序是多線程的,但會導致單線程程序速度明顯下降。在使用可能未正確設
置IsMultiThread變量的多線程的第三方工具時請開啟此選項。在單線程主程序和多線程Dll
間共享內存管理器時也需開啟。}
{.$define AssumeMultiThreaded}

{開啟此選項將不會在線程沖突時讓一個線程暫停,在活動進程與CPU核心數目比低(小於2)時
將會提升速度。開啟後,沖突時一個線程將會進入“等待”循環而不是交出時間片。}
{.$define NeverSleepOnThreadContention}

{開啟此選項會使程序僅在Delphi IDE內運行時才加裁FastMM作為內存管理器。當你希望發布的
Exe就是你調試的Exe,但只希望在開發主機上使用調試時請開啟此選項。當開啟後程序又並不
在開發主機上運行,它會使用默認的Delphi內存管理器(在Delphi2006以後是不開啟FullDebugMode
的FastMM)}
{.$InstallOnlyIfRunningInIDE}

{由於QC#14070(Delphi嘗試在borlandmm.dll的關閉指令執行後釋放內存),當使用了FastMM
為核心的borlandmm.dll的替代品,FastMM不能被正常卸載。開啟此選項會不卸載內存管理器
而避開這個錯誤。}
{.$define NeverUninstall}

{如果在當前工程中使用了運行期的包,需要啟動這個選項。會自動開啟AssumeMultiThreaded。
註意你必須確保在所有指針都釋放後FastMM被卸載。如果不這麽做會產生一個有很多A/V的巨
大的內存泄露報告。(參考常見問題)你必須同時啟動此選項和NeverUninstall選項。}
{.$define UseRuntimePackages}

{---------- 調試選項 ----------}

{開啟此選項將不會為FastMM4.pas單元產生調試代碼,也將同時阻止調試器進入FastMM4.pas單元}
{.$define NoDebugInfo}

{開啟下面選項將不顯示任何信息,在不可中止的服務器程序中比較有用}
{.$define NoMessageBoxes}

{如果要使用Windows API OutputDebugString過程來顯示調試信息請開啟下面選項}
{.$define UseOutputDebugString}

{開啟此選項會使用匯編語言版本的FastMM,這比Pascal版本的要快。僅在調試時關閉此選項。
開啟CheckHeapForCorruption會自動關閉此設置}
{$define ASMVersion}

{FastMM總會捕捉到兩次釋放的同一內存區域的糟糕操作,它也可以檢測堆的錯誤(通常是由
於程序越界讀寫內存)。這些檢測很耗費時間,所以這個選項應僅當調試時使用。如果此選項
開啟,ASMVersion會自動關閉}
{.$define CheckHeapForCorruption}

{開啟此選項會檢測在FastMM已卸載後對用戶對FastMM的引用操作。開啟後,當FastMM被卸載,
將不會重新啟動先前的內存管理器,而是假想存在一個內存管理器,並且一旦有內存操作便
拋出錯誤。這會捕捉到當FastMM已被卸載而程序仍進行內存操作的錯誤。}
{$define DetectMMOperationsAfterUninstall}

{設置以下選項來對內存泄露進行廣泛檢測。所有內存塊都會設置塊首和跟蹤器來校驗堆的完
整性。釋放的內存塊(指針)也會被清空以保證它們不會被再次使用。這一選項會大幅度降
低內存操作速度,僅當調試一個會越界讀寫內存或重復使用已被釋放的指針的程序時才使用。
開啟此選項會進而自動開啟CheckHeapForCorruption並自動關閉ASMVersion。提示:當開啟
此選項時,程序需要使用FastMM_FullDebugMode.dll文件。如果此文件丟失,程序將無法啟動。}
{.$define FullDebugMode}

{開啟此選項以進行徹底的棧追蹤:檢測所有棧條目以尋找合法的返回地址。註意這比使用
主棧幀的方法要慢很多,但更徹底。僅當開啟FullDebugMode時此選項有效。}
{$define RawStackTraces}

{開啟此選項會檢測程序中對已銷毀對象的引用。註意這會使對已釋放而又修改過(內容被
覆蓋)的內存塊的檢測無法進行(兩者無法共存)。僅當開啟FullDebugMode時此選項有效。}
{.$define CatchUseOfFreedInterfaces}

{開啟此選項以記錄所有的錯誤到一個與程序同目錄的文本文件中。內存分配錯誤(當開啟
FullDebugMode)將會添加到這個日誌裏。如果FullDebugMode關閉,此選項無效}
{$define LogErrorsToFile}

{開啟此選項將會記錄所有泄露到一個與程序同目錄的文本文件中。內存泄露報告(當開啟
FullDebugMode)將會添加到這個日誌裏。如果"LogErrorsToFile"和"FullDebugMode"未開
啟此選項無效。註意通常所有泄露都會被記錄,甚至那些AddExpectedMemoryLeaks標識的
可能的內存泄露。那些由指針引起的可能的泄露可能會由於開啟HideExpectedLeaks-
RegisteredByPointer而不顯示。}
{$define LogMemoryLeakDetailToFile}

{程序啟動時刪除日誌文件。當LogErrorsToFile不開啟時無效}
{.$define ClearLogFileOnStartup}

{是否動態鏈接FASTMM_FullDebugMode.dll。如果找不到該Dll,棧追蹤將無法進行。註意
當共享內存管理器時由於Dll卸載順序改變,可能會發生錯誤。}
{.$define LoadDebugDLLDynamically}

{FastMM通常會使用最頂端的可用地址來分配大的內存塊,而在最低端的可用地址上分配
中、小內存塊(這在一定程度上減少碎片)。開啟此選項會使內存分配總優先使用最頂
端的可用地址。如果過程使用了大於2GB的內存並且算法存在糟糕的指針分配 ,這個選
項會幫助盡早發現錯誤}
{$define AlwaysAllocateTopDown}

{---------- 內存泄露報告 ----------}

{開啟此選項以允許內存泄露報告,與下面兩個選項組合使用。}
{$define EnableMemoryLeakReporting}

{開啟下面選項將不會顯示和記錄由指針類型導致的可能的內存泄露。由類(指針)引起
的可能的內存泄露經常不明確,所以這些可能的泄露總是會記錄到日誌(在FullDebugMode
與LogMemoryLeakDetailToFile開啟時)並且當實際泄露比期待的多時一定會顯示。}
{$define HideExpectedLeaksRegisteredByPointer}

{開啟下面選項以實現僅在Delphi在主機上存在時才報告內存泄露。當"EnableMemoryLeakReporting"
關閉時此選項無效。}
{.$define RequireIDEPresenceForLeakReporting}

{開啟下面選項以實現僅在Delphi中調試程序時才報告內存泄露。當"EnableMemoryLeakReporting"
關閉時此選項無效。此選項僅在調試EXE工程時有效,不支持Dll}
{$define RequireDebuggerPresenceForLeakReporting}

{開啟下面選項以實現僅在被編譯單元中存在調試指示符($D)時才進行泄露檢測。當
"EnableMemoryLeakReporting"關閉時此選項無效。}
{.$define RequireDebugInfoForLeakReporting}

{開啟此選項以手工控制內存泄露報告。當開啟時,ReportMemoryLeaksOnShutdown(程序
關閉時報告內存泄露,默認關閉)會改為選擇是否生成報告。開啟時,其它泄露檢測選項
也必須正確設置才能進行檢測}
{.$define ManualLeakReportingControl}

{開啟下面選項將不顯示內存泄露信息下面的提示語}
{.$define HideMemoryLeakHintMessage}

{---------- 指令集設置 ----------}

{開啟下面選項以使用MMX指令集。關閉此選項會導致性能略微下降,但會與AMD K5、
Pentium I等早期處理器保持兼容。目前MMX指令只在可變尺寸的內存移動中使用,所以如
果UseCustomVariableSizeMoveRoutines關閉,此選項無效。}
{.$define EnableMMX}

{開啟下面選項以強制使用MMX指令集,而不管CPU是否支持。如果這一選項被關閉,
將會首先檢查CPU是否支持MMX指令。當EnabledMMX關閉時無效。}
{$define ForceMMX}

{---------- 共享內存管理器設置 ----------}

{允許共同使用FastMM編譯的主程序和Dll之間共享內存管理器。你可以向Dll中的函數傳遞
動態數組和長字符串。需要編譯Dll時開啟AttemptToUseSharedMM才可以真正實現內存共享。
註意如果主程序是單線程而Dll是多線程的,你必須在主程序裏開啟IsMultiThread,否則在
線程沖突時程序會崩潰。註意靜態鏈接的Dll會在主程序之前初始化,所以主程序實際會與
Dll共享內存管理器。
}
{.$define ShareMM}

{允許Dll之間(或靜態鏈接Dll時與主程序之間)共享內存管理器,要求共同使用FastMM編譯。
在使用動態鏈接的Dll時需要註意,因為如果Dll被卸載而其它Dll仍在共享內存管理器,程
序將會崩潰。這個選項只與Dll庫相關而且需要ShareMM與AttemptToUseSharedMM開啟。註意
如果Dll是靜態鏈接的,它們會在主程序之前初始化,實際是主程序與它們共享管理器。當
ShareMM關閉時此選項無效}
{.$define ShareMMIfLibrary}

{開啟下面選項,會嘗試在主程序和與之共同編譯的Dll(也開啟此選項)之間共享內存管理
器。當共享時,由使用共享者產生的泄露將不會自動清除。由於靜態鏈接的Dll是在主程序
之前初始化的,所以根據情況設置共享選項}
{.$define AttemptToUseSharedMM}

{開啟下面編譯選項以保證內存管理器的向後兼容性。對Delphi2006與Delphi2007與老版本
FastMM有效}
{$define EnableBackwardCompatibleMMSharing}

{---------- 組合設置 ----------}

{開啟此選項將激活FullDebugMode、InstallOnlyIfRunningInIDE、LoadDebugDLLDynamically。
如果程序正在Delphi中進行調試運行,FastMM將會進行完全調試(開啟FullDebugMode),否則
將使用默認內存管理器(Delphi2006版本以後是未開啟FullDebugMode的FastMM)。}
{.$define FullDebugModeInIDE}

{快速配置發布版本和調試版本}
{$ifdef Release}
{發布版本請設置}
{.$undef FullDebugMode}
{.$undef CheckHeapForCorruption}
{.$define ASMVersion}
{.$undef EnableMemoryLeakReporting}
{.$undef UseOutputDebugString}
{$else}
{調試版本請設置}
{.$define FullDebugMode}
{.$define EnableMemoryLeakReporting}
{.$define UseOutputDebugString}
{$endif}

{---------- borlndmm.dll 編譯選項 ----------}
{如果正在重編譯borlandmm.dll文件,請根據需要設置以下選項}

{當編譯borlandmm.dll時請開啟此選項}
{.$define borlndmmdll}

{如果dll被Delphi本身使用請開啟此選項}
{.$define dllforide}

{編譯調試dll文件時請開啟此選項}
{.$define debugdll}

{以下內容請不要改動}
{$ifdef borlndmmdll}
{$define AssumeMultiThreaded}
{$undef HideExpectedLeaksRegisteredByPointer}
{$undef RequireDebuggerPresenceForLeakReporting}
{$undef RequireDebugInfoForLeakReporting}
{$define DetectMMOperationsAfterUninstall}
{$undef ManualLeakReportingControl}
{$undef ShareMM}
{$undef AttemptToUseSharedMM}
{$ifdef dllforide}
{$define NeverUninstall}
{$define HideMemoryLeakHintMessage}
{$undef RequireIDEPresenceForLeakReporting}
{$ifndef debugdll}
{$undef EnableMemoryLeakReporting}
{$endif}
{$else}
{$define EnableMemoryLeakReporting}
{$undef NeverUninstall}
{$undef HideMemoryLeakHintMessage}
{$define RequireIDEPresenceForLeakReporting}
{$endif}
{$ifdef debugdll}
{$define FullDebugMode}
{$define RawStackTraces}
{$undef CatchUseOfFreedInterfaces}
{$define LogErrorsToFile}
{$define LogMemoryLeakDetailToFile}
{$undef ClearLogFileOnStartup}
{$else}
{$undef FullDebugMode}
{$endif}
{$endif}

{把BCB的相關設置都放在這裏。在“Build with Dynamic RTL”選項開啟的情況下,
CB2006/CB2007可以編譯borlandmm.dll文件以追蹤內存泄露。}
{---------- 專為BCB設置 ----------}

{要開啟為BCB準備的補丁,你需要在"Project Options->Pascal/Delphi Compiler->Defines"
中添加BCB的定義。(感謝JiYuan Xie實現這一部分)}

{$ifdef BCB}
{$ifdef CheckHeapForCorruption}
{$define PatchBCBTerminate}
{$else}
{$ifdef DetectMMOperationsAfterUninstall}
{$define PatchBCBTerminate}
{$else}
{$ifdef EnableMemoryLeakReporting}
{$define PatchBCBTerminate}
{$endif}
{$endif}
{$endif}

{$ifdef PatchBCBTerminate}
{$define CheckCppObjectType}
{$undef CheckCppObjectTypeEnabled}

{$ifdef CheckCppObjectType}
{$define CheckCppObjectTypeEnabled}
{$endif}

{如果"CheckHeapForCorruption"和"EnableMemoryLeakReporting"都未開啟,請關閉
"CheckCppObjectTypeEnabled"}
{$ifdef CheckHeapForCorruption}
{$else}
{$ifdef EnableMemoryLeakReporting}
{$else}
{$undef CheckCppObjectTypeEnabled}
{$endif}
{$endif}
{$endif}
{$endif}

fastmm4中文翻譯