查找和调试废弃内存和堆增长的提示

Jon*_*nah 7 memory iphone memory-leaks memory-management objective-c

我最近观看了WWDC 2010视频之一:Session 311 - 使用Instruments进行高级内存分析.链接在这里.

有关寻找遗弃记忆的视频中有一个有趣的例子.他们说调试通常比泄漏更重要,但可能更难.

Abandoned Memory被定义为"从未再次使用的可访问分配的内存".

泄漏定义为"无法再访问已分配的内存".

查找Abandoned Memory的主要方法是使用Allocations工具进行堆镜头.

但是,在确定我在代码中放弃了内存之后,我发现很难确切地知道它来自哪里.

我正在寻找一些很好的技巧或资源来寻找被遗弃的记忆.

谢谢!

ipm*_*mcc 5

在Instruments中,您可以获取由快照标识的任何对象的调用堆栈.截图:

使用仪器跟踪遗弃的记忆

所以我们在这里得到的是一个人为的例子,每当用户点击一个按钮时我就会分配一个1MB的NSMutableData.在中下方窗格中,我有4个快照,并且我有一个扩展显示自上次快照以来创建但未发布的对象.我突出显示了一个1.25MB的"非对象"分配,在右侧窗格中,它显示了发生此分配的确切调用堆栈.关于右侧面板的一个技巧是沿底部的滑块 - 它控制堆栈帧的消除.如果要查看所有堆栈帧,请将其一直拖到右侧.灰色框架是那些没有源代码的框架,而非灰色框架是您的代码(或者您有代码和源代码的代码.)(另外,如果您没有看到面板上的右键,检查工具栏中的"查看"按钮.)您还在寻找其他信息?