检查 Instruments 中的内存分配

Posted

技术标签:

【中文标题】检查 Instruments 中的内存分配【英文标题】:Checking memory allocation in Instruments 【发布时间】:2010-11-06 20:51:46 【问题描述】:

我已经使用泄漏工具清除了我的应用程序的泄漏,但我仍然注意到,当我切换视图时,objectalloc 工具在分配的对象数量和占用空间方面增加了。

我特别看到大量:

GeneralBlock-16,主要由 Foundation 负责调用者 NSLogv

GeneralBlock-0,主要负责 QuartzCore

关于我可以做些什么来进一步调试的任何提示?

谢谢!

【问题讨论】:

【参考方案1】:

ObjectAlloc 工具旨在绘制随时间变化的总对象分配图,它不考虑解除分配。本质上:它会一直上涨

您可以查看 Net Bytes 和 # Net 列。这些列根据您解除分配的对象数量进行调整,如果您担心总的对象分配,您可以使用这些来衡量您的程序的性能。

您可以查看 Apple 支持论坛上的 this thread - 它更多地涉及 Instruments 测量的内容以及如何测试您的应用程序。

【讨论】:

对不起,也许我的问题不清楚。我知道对象分配总是上升,但是我指的是 Net Bytes 和 #Net 也永远不会下降,这令人担忧。在导航控制器中推送视图会大大增加这些数字,而弹出视图不会减少它们。此外,GeneralBlock-0 的绝对数量也令人不安。我真的很想知道为什么存在这么多 0 位对象。 这不太正确;您可以将分配工具配置为仅跟踪实时分配。在这种情况下,这些列将准确反映当前内存中的内容。 bbum 是对的,在 Xcode 4 中,Instrument 中的默认分配模板显示“所有分配”分解为列,同时显示实时字节和总字节。【参考方案2】:

您应该查看http://developer.apple.com/videos/wwdc/2010/?id=311。

WWDC 2010 上关于使用 Instruments 进行内存分析的精彩视频。

【讨论】:

以上是关于检查 Instruments 中的内存分配的主要内容,如果未能解决你的问题,请参考以下文章

从 Instruments 读取内存分配结果

使用 Instruments 通过模态视图控制器改进内存管理

iPhone - 内存分配略有增加

AVCaptureSession 废弃内存 - 分配 - 仪器

iPhone:使用 Instruments 检测当前内存使用情况?

连续内存分配:内存碎片与分区的动态分配