重新仪器“内存泄漏”分析,其他工具是不是提供更多信息以找到泄漏的根本原因?

Posted

技术标签:

【中文标题】重新仪器“内存泄漏”分析,其他工具是不是提供更多信息以找到泄漏的根本原因?【英文标题】:re Instruments 'Memory Leak' profiling, do other tools give any more info re finding root cause of a leak?重新仪器“内存泄漏”分析,其他工具是否提供更多信息以找到泄漏的根本原因? 【发布时间】:2011-05-25 23:06:41 【问题描述】:

重新仪器“内存泄漏”分析,其他工具是否提供更多信息以查找泄漏的根本原因

我遇到的问题是找到根本原因(而不是 Instruments 告诉我的泄漏对象的创建位置)。对于我被卡住的示例,请参阅What is the source of the leaky object for this code?追查我哪里出错了。

所以我的问题是,除了仪器(以及使用“内存泄漏”的分析,它告诉您创建泄漏对象的位置,但不是根本原因)之外,还有其他我可以运行的工具吗?除了 Instruments 重新追踪根本原因点之外,我还有更多信息吗?

编辑 1 - 请注意我的应用程序将构建和分析没有任何问题。

【问题讨论】:

您可以尝试使用“分析”进行构建。我发现这可以帮助我找到很多在“泄漏”中运行时难以追踪的问题点 谢谢 - 但应该说,在我开始运行 Profile 之前,我的应用程序正在构建和分析,没有任何问题...... any good tutorials on finding root cause of memory leaks after Intruments has identified the location of creation of the leaky object? 可能重复请编辑您之前的问题,而不是重新发布。 好点 - 我忘记了我修改了上一个问题 - 我修改了上一个问题以匹配我得到的回复 - 这更有意义 - 这个问题是具体的我在追求什么 【参考方案1】:

我对阅读仪表显示还很陌生,但我在我的应用程序中发现了一些泄漏的方式是查看仪表中分配的对象计数,然后重复执行一些简单的 UI 功能。当我一遍又一遍地点击屏幕时,我会看到 2 或 3 个对象计数在一段时间内不断增加。

查看类,我发现在开发过程中我添加了一些属性,然后在 dealloc 代码中忘记了 nil。一旦我添加了这些语句,泄漏就消失了。

有趣的是,这些并没有出现在泄漏显示或静态分析仪中。至少我不认识。

【讨论】:

感谢 Derek - 这是我正在寻找的提示的一个很好的例子 - 不幸的是,我的应用程序中有一个点可以加载数据并同时执行许多操作,所以它可能不会不能帮助我解决我的具体问题

以上是关于重新仪器“内存泄漏”分析,其他工具是不是提供更多信息以找到泄漏的根本原因?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 iOS App 中的内存泄漏问题?

iphone/ipad 内存泄漏仪器工具

腾讯内部工具分享内存泄漏分析工具tMemoryMonitor

使用仪器检查 xcode 4 中的内存泄漏

iOS 的分配工具:比较两个快照的内存

内存泄漏仪器警告