我在Apple示例应用和我正在制作的游戏中观察到类似的行为。在游戏中,行为最终导致应用程序因内存不足而崩溃。示例应用程序是Touches。
在跟踪触摸的任何时刻,即当你在触摸中移动其中一个物体时,几乎任何时候触摸都在我的游戏中,内存使用率会稳定上升,只要你继续移动触摸。触摸序列完成后,内存使用量不会再次下降。我已经得到了Touches,它开始使用不到半个兆字节,最多约4MB的净分配,几分钟左右。记忆永远不会被释放。
所以我的问题是:为什么这个内存永远不会被释放?我从根本上误解了什么吗?这是一个框架缺陷吗?我已经阅读了一些有关加速度计问题并触及泄漏的内容,但我在游戏中根本没有使用加速度计。
答案 0 :(得分:5)
如果这看起来很简单,我道歉,但是......
您无法将NSZombiesEnabled设置为YES,是吗?
这会阻止任何对象的重新分配,如果你确实分配了新对象,那么EVENTUALLY应用程序将耗尽内存。
答案 1 :(得分:0)
使用工具查找未解除分配的实例。我遇到了类似的问题,所有这一切都归结为我正在调用retain,但没有释放(由于逻辑错误)。
答案 2 :(得分:0)
我的情况非常相似。事实上,如果我只是让我的应用程序运行而不触及任何东西(它所做的只是运行NSTimer来更新显示)。我注意到记忆缓慢但稳定地增加使用量。
如果有内存泄漏则不明显。因为只要检测到内存泄漏就会弹出内存泄漏。
这是否意味着存在无法检测到的内存泄漏?