不断增加应用程序内存(IOAccelResource)

我试图围绕一个问题(在这个问题上没有提到 ) 解决问题 。 上下文是:基于回合制的游戏,用cocos2d 2.0版开发,obj-c,没有ARC,目前准备AppStore更新来解决一些iOS 7问题(我的,不是iOS7)。

我自己的仪器,以及仪器,没有泄漏,没有遗弃的记忆,没有…平坦。 这也是iOS 4,5,6.1下的情况。 然而,在我提交之前的testing中,在分析设备时,我看到每2分钟增加1Mb,游戏处于空闲状态,即没有任何用户交互(见下图)。

在这里输入图像说明

我能看到的唯一的事情就是这个IOAccelResource类在世代捕获之间运行。

  1. 你有什么build议吗?
  2. 我无法find一个IOAccelResource很多…你们谁能指出我在正确的阅读方向吗? 如果这确实与cocos2d有关,我不介意在那里挖掘,但我不知道从哪里开始寻找。
  3. 另外,我想运行“尽可能释放”构build尽可能,而且仍然能够测量内存足迹随着时间的推移。 你能给我一个测量工艺尺寸的方法吗?

    TIA。

据我所知,这是一个虚假(可能的仪器错误)。 当使用相同的代码库的“释放”版本…即没有debugging…和监视进程大小(即没有debugging进程附加到正在运行的进程),内存蠕变不存在。

受过教育的猜测:UIAccelerometer可以使用IOAccelResource。 这听起来像一个加速度计I / O类的事情。

由于UIAccelerometer在iOS 7中被弃用,但仍然被cocos2d使用,可能有一个苹果没有捕捉或关心的问题。 只是为了testing尝试从cocos2d中删除任何UIAccelerometer引用,看看这是否消失。 发布版本不应该影响仪器的内存监控,而存档版本只是从代码angular度来看的发布版本。

您可以尝试使用通过仪器的堆积分析来监视分配。 这应该给你一个额外的内存分配在哪里的指示。 也许你已经试过了?

Edit Scheme > Run > Diagnostics “中的” Enable Zombie Objects选项可能导致此行为。 一定要禁用它,如果你有它启用。

里卡多有一半的答案:僵尸对象是这个的一部分。 你需要两个僵尸启用和一个附加的进程得到蠕变。

综上所述 :

  • 没有僵尸,没有记忆蠕变。
  • 与僵尸,没有debugging过程附加,没有记忆蠕变。
  • 与僵尸,附加debugging过程,记忆蠕变。