当前位置:  开发笔记 > 编程语言 > 正文

在Delphi中检测内存泄漏的最佳工具是什么?

如何解决《在Delphi中检测内存泄漏的最佳工具是什么?》经验,为你挑选了7个好方法。

什么是检测内存泄漏的最佳工具.

既免费也不免费.

谢谢



1> mghie..:

FastMM是一个免费的(源可用)内存泄漏检测器,已经集成在最新的Delphi版本中.我从来不需要任何其他东西.

在编码时限制内存泄漏的可能性要好得多,而不是在以后找到它们.一些技巧:

始终在代码中使用try和finally来释放创建的对象.最好立即编写此代码,然后编写代码以使用对象.更好地利用代码模板等IDE功能.

仅在绝对必要时使用返回动态分配对象的函数.将对象作为参数传递通常比创建并返回它们更好.例如这个

procedure getChoices(var AChoices: TStrings);

会好得多

function getChoices: TStrings;

因为没有意外泄漏创建的TStrings对象的可能性.


您可以通过设置ReportMemoryLeaksOnShutdown:= True来打开它; 或者从sourceforge获取最新版本并在.inc文件中设置正确的选项.
更好的是:程序getChoices(const AChoices:TStrings); 您仍然可以修改AChoices的属性,但不能将其分配给另一个对象.

2> CodeAndCats..:

我们在Delphi 7中使用EurekaLog.它是一个异常处理程序组件,它提供有关异常(包括callstack!环境变量等)的非常详细的信息,即使对于访问冲突也是如此.但另一个很棒的功能是你可以告诉它内存泄漏的错误,它显示了首先分配内存/对象的确切代码行!这是一个商业产品,但我仍然强烈推荐它.



3> Vegar..:

我建议使用完整的FastMM4版本而不是Delphi中包含的版本.完整版本为您提供了一个完整而详细的报告,而不是对话框.将它与自制的'memoryleak-logfile-different'相结合,你可以为现有的bughunt设置.


您可以使用FastMMUsageTracker.pas文件,该文件创建一个单独的窗口,显示每秒钟左右更新的内存使用情况

4> Lars Truijen..:

AQTime非常好.它还可以执行其他操作,例如性能分析.并且它不需要对代码进行任何更改.当然使用调试信息进行编译有助于提供更好的结果.


AQTime的好处是适用于许多编译器.它可能更难以使用,与FastMM不同,它无法在任何地方安装并需要代码检测.但它可以帮助精确查明泄漏.我通常从FastMM开始,然后使用AQTime向下钻取.

5> Michiel T..:

我总是使用ReportMemoryLeaksOnShutdown:=(DebugHook <> 0); 所以,如果我正在调试,我只会报告泄漏.

ps想把它放在评论中,但我还没有权利..



6> François..:

您可能想看一下CodeRage 2会话:为傻瓜打击内存泄漏.它主要说明如何使用FastMM来防止/检测Delphi中的内存泄漏.适用于D2007,但仍与D2009相关.



7> 小智..:

FastMM非常好.我知道Delphi的3或4个免费内存管理器.检查所有它们需要不到一个小时,因为通常它们只需要3行代码就可以嵌入到项目中.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有