2009-06-24 65 views
3

我正在阅读用于iPhone开发的泄漏检测工具,并在我进入一个更大,更难调试的项目之前故意插入并在我的小程序中查找内存泄漏。iPhone OS在退出时是否回收用户空间内存?

这是没有问题的识别内存泄漏,也就是说,发生在像应对触摸事件经常调用的方法。泄漏仪器最终将识别未声明的虚拟内存。

我更担心的是用于退出整个系统中的代码泄漏。一旦我完全退出我的应用程序,是否有人担心某些事情未被释放,或者iPhone OS是否自动回收所有用户内存?

这个问题是读了不少文件,并在不知道任何东西后我不清楚,我认为它必须努力像其他的操作系统在这方面,只是收回所有的用户空间。如果是这样,我不会很好地清理定期泄漏,所以我的应用程序可以运行任意时间与有限的内存,然后不用担心太多,一切都在退出时释放?

而且,如果是重要的退出,因为它不会被操作系统回收之前释放的一切,也可把我的应用程序的好方法活在出口检验后的乐器吗?当我在模拟器或设备上按Home键时,我是否已经失去了检测退出时间泄漏的机会?

回答

3

是的,结束你的程序将释放它所拥有的每一个内存位。任何其他的东西都是一个操作系统错误,你不太可能会发现这种情况。

编辑:我敢打赌,你问这个是因为文件说,“iPhone不支持垃圾回收。”但是,该声明不适用于程序结束时释放内存。这只是谈论你在程序运行时如何处理释放自己的内存。

+0

我仍然觉得它是一个有用的编程约定,就像系统在你之后不会清理一样,并且确保你在你的应用程序出口时正确处理所有释放。这就像在停车场使用转向灯一样,它强化了一个好习惯。 – 2009-06-24 16:35:11

+0

我打算这样做,但如果我有退出漏洞并且无法弄清楚如何找到并清理它们,Apple会拒绝我的应用程序?但是我相信操作系统应该被清理干净 - 我无法在他们的iPhone文档迷宫中找到明确的声明。感谢大家! – 2009-06-24 17:03:37

0

的iPhone应该使用虚拟内存,所以(理论上反正)操作系统将清理一切行动时,一个漏水的应用程序退出。

相关问题