我最近观看了 WWDC 2010 视频之一:Session 311 - Advanced Memory Analysis with Instruments。链接是here .
视频中有一个关于寻找被遗弃的内存的有趣例子。他们说调试通常比泄漏更重要,但也可能更困难。
Abandoned Memory 被定义为“不再使用的可访问分配的内存”。
泄漏被定义为“无法再访问的分配内存”。
查找 Abandoned Memory 的主要方法是使用 Allocations 工具进行堆镜头。
但是,在确定我在代码中放弃了内存之后,我发现真的很难找出它的确切来源。
我正在寻找一些很好的提示或资源来寻找被遗弃的内存。
谢谢!
最佳答案
在 Instruments 中,您可以获得由 heapshot 标识的任何对象的调用堆栈。截图:
所以我们在这里得到的是一个人为的案例,每次用户点击一个按钮时我都会分配一个 1MB NSMutableData。在中心底部 Pane 中,我有 4 个堆,我有一个扩展以显示自上次堆以来已创建但未释放的对象。我突出显示了一个 1.25MB 的“非对象”分配,在右 Pane 中,它向我显示了发生此分配的确切调用堆栈。右侧面板的一个技巧是底部的 slider ——它控制堆栈帧的消除。如果要查看所有堆栈帧,请将其一直拖到右侧。灰色框架是您没有源代码的框架,非灰色框架是您的代码(或您同时拥有符号和源代码的代码。)(另外,如果您没有看到面板上的对,检查工具栏中的“查看”按钮。)您还在寻找什么其他信息?
关于iphone - 查找和调试废弃内存和堆增长的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011683/