HeapShot 使用 Instrument 检测内存泄漏

Posted

技术标签:

【中文标题】HeapShot 使用 Instrument 检测内存泄漏【英文标题】:HeapShot using Instrument to detect memory leaks 【发布时间】:2011-09-08 14:22:44 【问题描述】:

请帮助我了解如何使用图像中显示的这种静态。 如何有效地使用 heapshot 来检测内存泄漏?

我已使用泄漏添加了仪器的图像。但我无法找到内存泄漏的确切位置。 请指导我。

【问题讨论】:

改用“泄漏”工具。 【参考方案1】:

基本上,此屏幕截图中的 heapshot 将显示在上一个快照之后创建且仍处于“活动”状态(保留计数 > 0)的所有对象。

典型的用法是点击“Mark Heap”,然后导航到视图控制器,点击几个按钮,执行一些操作,然后点击“返回”按钮。拍摄另一个快照并检查对象列表。您应该确保周围没有任何应该清理的物体。这可能是视图控制器本身、模型对象等。

如果您想检测真正的泄漏(未引用的对象),请使用泄漏工具。如果您想找到其他类型的无限内存增长,即仍然被引用且不应该存在的对象,请使用此屏幕截图中的分配工具检查堆快照。

编辑:

您在原始帖子中添加了泄漏屏幕截图。要查看分配此对象的堆栈跟踪,请单击此按钮:

这应该会告诉你对象是在哪里创建的。然后你需要弄清楚适当的发布调用需要去哪里。

【讨论】:

感谢您的输入...我已经为使用泄漏的仪器添加了图像..请检查它指导我

以上是关于HeapShot 使用 Instrument 检测内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

检测错误及其解决方案 - Xcode 4.2 - Instrument [Memory Leaks]

Instrument使用

instrument之Time Profiler总结

Xcode 4 Memory Leak Instrument如何获取发生泄漏的代码行

如何动态检测 JUnit 测试?

我可以使用 ByteBuddy 检测传出方法/构造函数调用吗?