我正在阅读用于iPhone开发的泄漏查找工具,并在我进入一个更大,更难调试的项目之前故意插入并查找我的小程序中的内存泄漏。
识别内存泄漏是没有问题的,例如,在响应触摸事件的常规调用方法中发生。泄漏仪器最终将识别无人认领的虚拟内存。
我更担心退出整个系统的代码泄漏。一旦我完全退出我的应用程序,是不是已经解除分配的问题,或者iphone OS是否会自动回收所有用户内存?
在阅读了相当多的文档后,我不清楚这个问题,在不知道其他任何事情的情况下,我认为它必须像其他操作系统一样工作,只需收回所有用户空间。如果是这样的话,我不会很好地清理常规泄漏,这样我的应用程序可以在有限的内存中运行任何时间,然后不用担心所有内容都会在退出时释放出来吗?
此外,如果在退出之前释放所有内容至关重要,因为操作系统不会回收它,是否有一种好方法可以在退出检查后让我的应用程序在仪器中保持活动状态?当我按下模拟器或设备上的主页按钮时,我是否已经失去了检测出口时间泄漏的机会?
答案 0 :(得分:3)
是的,结束程序将释放它所拥有的每一点内存。否则一切都是操作系统错误,你不太可能发现这种情况。
编辑:我打赌你问这个,因为文档说“iPhone不支持垃圾收集。”但是,该语句不适用于程序结束时释放内存。它只讨论了在程序运行时如何处理释放自己的内存。答案 1 :(得分:0)
iPhone应该使用虚拟内存,所以(理论上无论如何)操作系统会在泄漏的应用程序退出时清理所有内容。