我在苹果的一个示例应用程序和我正在开发的游戏中观察到了类似的行为。在游戏中,由于内存不足,该行为最终会导致应用程序崩溃。示例应用程序是Touches。
在跟踪触摸的任何时候,也就是当你在触摸中移动其中一个物体的时候,在我的游戏中几乎任何时候触摸都会停止,只要你继续移动触摸,内存使用量就会稳步上升。一旦触摸序列完成,内存使用率就不会再下降。我已经接触到了,它开始使用不到半兆,高达大约4MB的净分配,在几分钟内运行。该内存永远不会被释放。
所以我的问题是:为什么这个内存永远不会被释放?我是不是从根本上误解了什么?这是一个框架缺陷吗?我读过一些关于加速度计和触摸泄漏的问题,但我在这个游戏中根本没有使用加速度计。
发布于 2009-07-17 19:14:00
如果这看起来太基本了,我很抱歉,但是...
您不可能将NSZombiesEnabled设置为YES,是吗?
这将防止任何对象的释放,如果你确实分配了新的对象,那么最终应用程序将耗尽内存。
发布于 2009-07-17 15:38:20
使用工具找出哪些实例未被释放。我也遇到过类似的问题,归根结底就是我调用了retain,但没有调用release (由于逻辑错误)。
发布于 2009-08-05 22:07:00
我正处于一个非常相似的情况。事实上,如果我只是让我的应用程序在不接触任何东西的情况下运行(它所做的一切就是运行一个NSTimer来更新显示)。我注意到内存使用量缓慢但稳定地增长。
如果有内存泄漏,就不明显了。因为每当它检测到内存泄漏时,它都会弹出内存泄漏。
那么,这是否意味着存在无法检测到的内存泄漏?
https://stackoverflow.com/questions/1144026
复制相似问题