2012-12-11 28 views
0

我最近将一个项目移植到了ARC上,因为我在碰撞时遇到了问题,并且确定了原因,无论是泄漏还是保留周期等,现在我已经移植过了,测试,看看它是否仍然崩溃,因为我没有设法获得通过活动监视器给我heeby jeebies当它显示我在分配工具,它看起来申请做这个(活动监视器分析器)iOS memory madlady

activity monitor

而像

allocations

真正的内存使用甚至不是最糟糕的,有一次它激增到90 MB左右,我不确定如何继续,因为我不能100%确定如何处理这里给出的信息,除了假设我可能是东东,非常错误,而且我也运行泄漏仪器,我有一些,但它们很小,都是以字节为单位。

有没有人有解释?或者至少能够澄清我可能看到的内容? real memory usagelive bytesoverall bytes之间有什么区别?同样,这些结果也会一次完成相同的操作,然后在最后显示给您。

我一直试图减少真正的内存使用作为前ARC转换我经常有内存警告和沉默崩溃,我没有再次遇到这些转换后,但我没有做任何长时间的测试,因为我无法想象即使尝试真正的内存使用情况如此。实际上看起来比ARC之前要高很多......尽管ARC的活动字节看起来更低......疯狂!

回答

1

让我困惑了一阵子的东西是ARC--它的美妙 - 并不一定避免需要@autoreleasepool

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html

我在一个应用程序运行非常大的内存使用,直到有人建议:

@autoreleasepool { 

    // lots of allocating of objects returned from methods then discarded 

} // and the closing brace of the autoreleasepool block causes their memory to be recovered here 

也许这会帮助你。

在探查各列的含义一个很好的解释是Instruments ObjectAlloc: Explanation of Live Bytes & Overall Bytes

+0

我确实认为,我可能有一个循环的地方有很多自动释放对象被分配但有人告诉我,忽略概念作为你知道内存最终会被释放。不过,我会尝试这...谢谢 – Genhain