Frequently Asked Questions
--------------------------
Q: When my program shuts down FastMM reports that it has leaked memory. Is it possible that FastMM is wrong?
A: Unfortunately, no. If FastMM reports that a block has been leaked, then it means that a block was allocated but never freed - thus leaked. You may use FullDebugMode to shed more light on the cause of the problem.
Q: When I enable the FullDebugMode option my application crashes during startup. What's wrong?
A: The FastMM_FullDebugMode.dll library is required for FullDebugMode. Please make sure it is either in the same folder as the application, or it is accessible on the path.
Q: When a memory error pops up in "FullDebugMode" there is no debug info in the stack traces, only addresses. Why?
A: For the FastMM_FullDebugMode.dll library to determine unit/line number information for stack traces any one of the following has to be available: TD32 debug info, a .map file, a .jdbg file or embedded JCL debug info. If none of these are available you will only get addresses in stack traces. For line numbers to be shown you also need to enable "Debug Information", "Reference Info" and "Use Debug DCUs". Also, if the addresses are inside a dynamically loaded DLL that was unloaded before shutdown then FastMM will not be able to determine unit/line number info for them.
Q: I have enable FullDebugMode and get a log file containing stack traces of memory leaks, but no line numbers. Why?
A: To get line numbers you also need to enable "Debug Information", "Reference Info" and "Use Debug DCUs" on the "Compiler" tab of the "Project Options" dialog.
Q: My program used to work fine with the Borland memory manager, but I get an "Invalid Pointer Operation" or "Access Violation" with FastMM. Is there a bug in FastMM?
A: Highly unlikely. The memory manager is such a critical part of any program and is subjected to such a large amount of traffic that it is rare that a bug of this nature will make it through testing. FastMM works differently than the default memory manager and does more pointer checking, so it will catch more errors. For example: The default MM may allow you to free the same pointer twice while FastMM will immediately raise an "Invalid Pointer Operation" if you try to do so. Compile your application with the "FullDebugMode" option set in FastMM4.pas - this should raise an error closer to the source of the problem.
Q: My program used to work with replacement memory manager X, but I get an access violation when I try to use FastMM. Why?
A: There may still be a reference to the old memory manager somewhere in the source. Do a "find in files" and check that the old memory manager is not referenced in any "uses" clause. FastMM checks that it is the first memory manager that is being installed, but many other memory managers don't, so it's quite possible that another MM may be installing itself after FastMM.
Q: FastMM doesn't make my program any faster. What's wrong?
A: If your program does not spend much time allocating and freeing memory, then there is little that FastMM can do to speed it up. For example: If your application spends only 1% of its time allocating memory using the default memory manager, a blazingly fast memory manager can at best make it 1% faster. FastMM is much faster than the default memory manager of Delphi 2005 (and older Delphi versions), but if the bottleneck in your program is not memory management then your gains may not be as great as you had hoped.
Q: I have added FastMM4.pas as the very first unit in my project's .dpr file, but when I try to run my program it still complains that it is not the first unit. Why?
A: If you are using an exception handler that modifies the unit initialization order (like MadExcept or EurekaLog), you have to change its configuration so that FastMM is initialized first.
Q: Delphi 2005 crashes with an error message "Class 'TApplication', already if class map" (sic) when I replace the default borlndmm.dll with the FastMM DLL. Why?
A: It is due to a bug in Delphi 2005 (QC#14007). There is an unofficial patch available that fixes this. Refer to FastMM4_Readme.txt for details.
Q: I am using the replacement borlndmm.dll together with the Delphi IDE. When I open up two copies of Delphi and then close one down I get a memory leak report. Why?
A: When compiling the DLL you should set the "NeverUninstall" option.
Q: I am using the replacement borlndmm.dll together with the Delphi 2005 IDE. When I close the IDE it remains in task manager. Why?
A: This is due to a bug (QC#14070). When compiling the DLL you should set the "NeverUninstall" option to work around it.
Q: My program used to work fine, but if I enable "FullDebugMode" and run it I get an access violation at address $8080xxxx. Why?
A: You are attempting to access properties of a freed object. When you free a block in "FullDebugMode", FastMM fills the freed memory area with a pattern of $80 bytes. If there were any pointers, long strings or object references inside the freed object they will now point to $80808080 which is in a reserved address space.
Q: In "FullDebugMode" when an error occurs the stack traces are very incomplete. Why?
A: You have probably disabled the "RawStackTraces" option. Without that option set, FastMM can only do a stack trace for routines that set up a stack frame. In the "Project Options" window on the "Compiler" tab, enable the "Stack Frames" option to create stack frames for all procedures. Note that the "RawStackTraces" option usually results in more complete stack traces, but may also introduce more (unavoidable) "false alarm" entries in the stack traces.
Q: How do I get my DLL and main application to share FastMM so I can safely pass long strings and dynamic arrays between them?
A: The easiest way is to define ShareMM, ShareMMIfLibrary and AttemptToUseSharedMM in FastMM4.pas and add FastMM4.pas to the top of the uses section of the .dpr for both the main application and the DLL.
Q: I am using Windows x64 edition. How do I enable my applications to address more than 2GB RAM?
A: Add a line containing {$SetPEFlags $20} to the .dpr file. This will set the LARGE_ADDRESS_AWARE flag in the executable and Windows x64 will consequently give the process a full 4GB user address space instead of the usual 2GB.
Q: I get the following error when I try to use FastMM with an application compiled to use packages: "[Error] Need imported data reference ($G) to access 'IsMultiThread' from unit 'FastMM4'". How do I get it to work?
A: Enable the "UseRuntimePackages" option in FastMM4Options.inc.
Q: I use runtime packages, and when my application shuts down I get a huge memory leak report followed by lots of access violations. Why?
A: This is most likely a package unload order problem: FastMM is uninstalled (and does the leak check) before all live pointers have been freed, and when the application subsequently tries to free the remaining live pointers the A/Vs occur. Either ensure that FastMM is unloaded last (using sharemem together with the replacement borlndmm.dll is one way), or use the "NeverUninstall" option and disable the memory leak report.
Q: Since version 4.29 "FullDebugMode" is really slow. Why?
A: It is because of the new "RawStackTraces" option. Switch it off and performance will be on par with previous versions, but stack traces will be less complete.
Q: I notice there is a precompiled debug borlndmm.dll for the IDE. Why would I need that?
A: You most likely won't. It's for hunting bugs in the IDE.
Q: If I replace the borlndmm.dll used by the IDE, how does this affect the memory manager used by my applications?
A: It doesn't. If your application has sharemem.pas as the first unit in the project's .dpr file then it will use the first borlndmm.dll it finds on the path. It does not have to be the same one that the IDE uses.
Q: Does enabling memory leak checking make my application slower?
A: No. Lea
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
例子主要包括SocketAsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,用于测试SocketAsyncEventArgs的性能和压力,最大连接数支持65535个长连接,最高命令交互速度达到250MB/S(使用的是127.0.0.1的方式,相当于千兆网卡1Gb=125MB/S两倍的吞吐量)。服务端用C#编写,并使用log4net作为日志模块; 同时支持65536个连接,网络吞吐量可以达到400M。
资源推荐
资源详情
资源评论
收起资源包目录
C#高性能大容量SOCKET并发完成端口例子(有C#客户端)完整实例源码 (321个子文件)
NETUploadClient.vshost.application 2KB
NETUploadClient.application 2KB
BorlndMM.bdsproj 21KB
BorlndMM.bdsproj 8KB
VT XP.bmp 19KB
VT utilities.bmp 3KB
VT tick light.bmp 3KB
VT check light.bmp 3KB
VT flat.bmp 3KB
VT check dark.bmp 3KB
VT tick dark.bmp 3KB
VT move east-west.bmp 630B
VT move north-south.bmp 630B
VT move all.bmp 630B
VT XP button minus.bmp 308B
VT XP button plus.bmp 308B
BorlndMM.bpf 177B
VirtualTreesC4D.bpk 5KB
VirtualTreesC4.bpk 5KB
VirtualTreesC6D.bpk 4KB
VirtualTreesC6.bpk 4KB
VirtualTreesC5D.bpk 3KB
VirtualTreesC5.bpk 3KB
BorlndMM.cbproj 10KB
IOCPDemoCln.cfg 828B
IOCPDemoSvr.cfg 801B
VirtualTreesD7.cfg 659B
TestDLL.cfg 536B
VirtualTreesD7D.cfg 527B
TestApplication.cfg 515B
FullDebugModeDemo.cfg 509B
BorlndMM.cfg 445B
PK_IOCPSocket.cfg 438B
SocketAsyncSvr.exe.config 3KB
SocketAsyncSvr.vshost.exe.config 3KB
app.config 3KB
NETUploadClient.exe.config 187B
NETUploadClient.vshost.exe.config 187B
App.config 187B
FastMM4BCB.cpp 45KB
DLLEntry.cpp 2KB
DLLEntry.cpp 2KB
VirtualTreesC5D.cpp 832B
VirtualTreesC5.cpp 757B
VirtualTreesC4.cpp 753B
VirtualTreesC4D.cpp 724B
VirtualTreesC6D.cpp 519B
VirtualTreesC6.cpp 519B
UploadSocketProtocol.cs 17KB
AsyncSocketServer.cs 13KB
DownloadSocketProtocol.cs 13KB
RemoteStreamSocketProtocol.cs 11KB
AsyncSocketInvokeElement.cs 9KB
SyncSocketInvokeElement.cs 6KB
ProtocolKey.cs 6KB
LogSocketProtocol.cs 5KB
IncomingDataParser.cs 4KB
ClientBaseSocket.cs 4KB
DynamicBufferManager.cs 4KB
ControlSocketProtocol.cs 4KB
ClientUploadSocket.cs 3KB
AsyncSocketUserToken.cs 3KB
OutgoingDataAssembler.cs 3KB
Program.cs 3KB
Program.cs 2KB
AsyncSendBufferManager.cs 2KB
ThroughputSocketProtocol.cs 2KB
DaemonThread.cs 2KB
BaseSocketProtocol.cs 2KB
AsyncSocketUserTokenPool.cs 2KB
AssemblyInfo.cs 1KB
BasicFunc.cs 1KB
AssemblyInfo.cs 1KB
Settings.Designer.cs 1KB
NETIOCPSvr.csproj 6KB
NETUploadClient.csproj 5KB
VT move east.cur 766B
VT move north-south.cur 766B
VT move north-east.cur 766B
VT move south.cur 766B
VT move west.cur 766B
VT move north-west.cur 766B
VT move south-west.cur 766B
VT move north.cur 766B
VT move south-east.cur 766B
VT move east-west.cur 766B
VT header split.cur 326B
VT move all.cur 326B
VirtualTrees.dcr 7KB
Export.def 1KB
Export.def 1KB
SQLFrame.dfm 114KB
MainForm.dfm 114KB
ClientsFrame.dfm 114KB
LogFrame.dfm 113KB
IOCPDemoClnMain.dfm 64KB
UploadFrame.dfm 44KB
DownloadFrame.dfm 43KB
RemoteStreamFrame.dfm 24KB
ConfigForm.dfm 17KB
共 321 条
- 1
- 2
- 3
- 4
SQLDebug_Fan
- 粉丝: 708
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【创新创业材料】某服装进入XX市市场可行性报告 .zip
- 【创新创业材料】某市图书馆建设项目可行性研究报告.zip
- 【创新创业材料】某医疗器械股份有限公司核心产品国内外营销网络建设项目可行性研究报告-优秀甲级资质可研报告.zip
- 【创新创业材料】某化工公司氨基酸原料及磷化工产品生产项目可行性研究报告-极品推荐140页优秀甲级资质可研报告.zip
- 质量运营与模式i建构分享 - 转PDF.pdf
- JAVA中Spring框架入门与实践心得.zip
- 【创新创业材料】泸州老窖中长期发展战略.zip
- 【创新创业材料】旅游地产:山东胶南小珠山旅游&文化创意地产项目可行性研究报告2008-138页.zip
- main.c
- Unity 创建快捷方式自动启动
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页