【问题标题】:What does <non-object> in Allocation "heapshots" mean?分配“堆”中的 <non-object> 是什么意思?
【发布时间】:2011-05-04 00:23:18
【问题描述】:
我很难在我的 iPad 应用程序中修复与内存相关的问题,但是,好在我因此而了解了“heapshots”。糟糕的是,我仍然无法弄清楚提供给我的某些信息是什么意思。
那么,这些仍然存在并占用堆增长中描述的大部分内存的非对象是什么?有可能摆脱它们吗?看起来大部分都与各种绘图操作、CALayer、上下文等有关(类别:“Malloc”或“Realloc”)。如果需要,我可以提供更多详细信息。
【问题讨论】:
标签:
iphone
objective-c
xcode
ipad
instruments
【解决方案1】:
这意味着内存块不是为对象分配的(例如纯 c 结构)。
通常它们是由系统框架代码分配的,因此还有一些其他的对象泄漏。例如。如果你忘记释放 UIView,那么它的层也不会被释放。
您可以打开“扩展详细信息”面板(参见“查看”菜单)并分析调用堆栈。请记住,您忘记的一个release 会导致大量内存泄漏,因此请尝试修复最简单的泄漏,然后检查其他泄漏是否消失。
还有一个技巧。您可以逐个禁用应用程序的功能块,看看泄漏是否消失。因此,您将能够找到它所在的模块(类、功能块等)。