我很难在我的iPad应用程序中修复与内存相关的问题,但是,好消息是,我因此而了解了“快照”。不好的是,我仍然无法弄清楚提供给我的一些信息是什么意思。
那么,这些非对象仍然存在并占据堆增长中描述的大部分内存?有可能摆脱它们吗?看起来大多数都与各种绘图操作,CALayer,上下文等有关(类别:“Malloc”或“Realloc”)。如果需要,我可以提供更多细节。
答案 0 :(得分:20)
这意味着内存块不是为对象分配的(例如纯c结构)。 通常它们是由系统框架代码分配的,因此还有一些其他对象泄漏。例如。如果你忘了发布UIView,那么它的图层也不会被释放。
您可以打开“扩展详细信息”面板(请参阅“查看”菜单)并分析调用堆栈。请记住,您忘记的release
会导致大量内存泄漏,因此请尝试修复最简单的泄漏,然后检查其他泄漏是否消失。
还有一招。您可以逐个禁用应用程序的功能块,看看泄漏是否消失。因此,您将能够找到发生它的模块(类,功能块等)。