2009-07-17 74 views
2

我在Apple示例应用程序和我正在处理的游戏中观察到类似的行为。在游戏中,行为最终会导致应用程序因内存不足而崩溃。示例应用程序是Touches。iPhone:在使用触摸的应用程序中稳步增加内存使用

在任何时候,当触摸被跟踪时,也就是当你在Touches中移动其中一个物体时,并且几乎在任何时候触摸在我的游戏中,内存使用量稳步增长,随着你继续移动触摸。一旦触摸序列完成,内存使用不会回落。我已经得到了Touches,它开始时使用的不到半个兆,在几分钟内玩到4MB的净分配。该内存永远不会被释放。

所以我的问题是:为什么这个内存永远不会被释放?我从根本上误解了什么?这是一个框架缺陷吗?我已经阅读了一些关于加速度计的问题并触及泄漏,但我在这个游戏中根本没有使用加速度计。

回答

5

我道歉,如果这似乎太初级了,但是......

有没有你NSZombiesEnabled设置为YES的机会,你呢?

这将阻止任何对象的释放,如果您确实分配了新对象,则EVENTUALLY应用程序将耗尽内存。

0

使用工具来查找哪些实例未被释放。我有一个类似的问题,并且所有的结果都是我称之为保留,但不是释放(由于逻辑错误)。

+0

最近我在仪器上花了很多时间。事情是,所有未被释放的内存都是在库调用中分配和使用的内存。像事件处理基础设施使用的CFSets或者来自stringWithFormat:calls的NSString对象。如何解决事件处理系统不解除分配CFSet对象的问题?我从来没有任何访问这些。 – 2009-07-17 15:45:14

+0

你是否保留这些对象? – Codebeef 2009-07-17 16:24:41

+0

您是否在触控处理程序中保留了任何触控事件对象或任何对象? – Codebeef 2009-07-17 16:25:20

0

我在一个非常相似的情况。事实上,如果我只是让我的应用程序运行而不触及任何东西(它只是运行NSTimer来更新显示器)。我注意到内存在使用中缓慢但稳步增加。

如果有内存泄漏其不明显。因为一旦检测到内存泄漏就会弹出。

那么这是否意味着有无法察觉的内存泄漏?

相关问题