在iPhone和模拟器上显示扩展内存使用情况的漏洞
当我使用Leaks工具在模拟器中运行我的应用程序时,它使用大约2.5mb的内存。当我在iPhone上运行它时,需要永久启动,慢慢爬到〜34mb的内存然后崩溃。但是,当我在没有泄漏的iPhone上运行它时,它会很快启动并运行正常。为什么是这样?在iPhone和模拟器上显示扩展内存使用情况的漏洞
崩溃可能是由于您的应用程序中存在内存泄漏以及设备内存不足。没有看到任何代码,这是不可能告诉的。 Here是关于如何使用仪器
教程的“永远需要推出”和和运行速度慢是由于泄漏监测系统轮询每10秒为信息设备
编辑:这可能是由于在给定的时间将太多的对象保存在内存中。检查仪器和对象分配。只是因为你没有泄漏并不意味着你不能用完内存
你有没有启用僵尸检测?
僵尸检测将导致分配给每个对象的对象永远不会被释放(对象在释放时被标记为僵尸)。这将导致记忆力增长,正如你所描述的。一个常见的错误是在使用仪器时启用僵尸检测,无论是通过环境变量还是通过Object Alloc仪器中的复选框。
如果不是僵尸或泄漏,那么就像其他人所说的那样 - 记忆被分配并粘住。使用Object Alloc工具来跟踪应用程序中分配的对象,并确保它们中的每一个都存在是有原因的。您可以打开“仅跟踪实时分配”来过滤掉所有已被释放的对象。
僵尸将导致应用程序在所有环境中增长,而不仅仅是调试 – coneybeare 2009-11-06 16:54:38
我怎么看我是否有僵尸检测启用? – rickharrison 2009-11-06 16:58:18
点击xcode中的可执行文件。看看参数。如果它说NSZombieEnabled并且有一个复选标记,那么它就是 – coneybeare 2009-11-06 17:01:00
不太可能 - 开发人员的应用只有在仪器下运行时才会显着增长。这表明调试代码正在引发增长。最有可能的是,僵尸检测是原因。 – bbum 2009-11-06 16:51:10
当我用模拟器运行泄漏时,没有内存泄漏。有几个,但我修复了他们全部 – rickharrison 2009-11-06 16:58:53
我编辑了我的答案 – coneybeare 2009-11-06 17:01:35