常量应用程序内存增加(IOAccelResource)

时间:2013-10-07 20:52:48

标签: ios objective-c memory-management cocos2d-iphone

我试图围绕一个问题(在this question中躲过)。上下文是:回合制游戏,使用cocos2d版本2.0开发,obj-c,无ARC,目前准备AppStore更新来解决一些iOS 7问题(我的,而不是iOS7)。

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

enter image description here

我唯一能看到的是这个IOAccelResource类别在生成捕获之间运行。

  1. 您对此有何建议?
  2. 我无法找到关于IOAccelResource的更多内容......你们中的任何人都能指出我正确的阅读方向吗?如果这确实与cocos2d有关,我不介意在那里挖掘,但我不知道从哪里开始寻找。
  3. 此外,我希望尽可能以“尽可能接近发布”的方式运行,并且仍能够随着时间的推移测量内存占用。你能建议我一种测量工艺尺寸的方法吗?

    TIA。

5 个答案:

答案 0 :(得分:2)

据我所知,这是一个虚假的(可能的仪器错误)。当使用相同代码库的'release'版本...即没有调试...并监视进程大小(即没有附加到正在运行的进程的调试进程)时,内存蠕变就不存在了。

答案 1 :(得分:1)

受过教育的猜测:UOAccelerometer可以使用IOAccelResource。它当然听起来像加速度计I / O类。

由于UIAccelerometer在iOS 7中被弃用但仍然被cocos2d使用,因此可能存在Apple没有关注或关注的问题。只是为了测试尝试从cocos2d删除任何UIAccelerometer引用,看看它是否消失。发布版本不应影响仪器内存监控,而归档版本只是代码角度的发布版本。

答案 2 :(得分:1)

您可以尝试使用仪器的快照分析来监控分配。这应该可以指示附加内存的分配位置。也许你已经试过了吗?

答案 3 :(得分:1)

Enable Zombie Objects上的Edit Scheme > Run > Diagnostics选项可能会导致此行为。如果已启用它,请务必将其禁用。

答案 4 :(得分:1)

里卡多的答案有一半:僵尸对象就是其中的一部分。你需要启用Zombies和附加进程才能获得蠕变。

总结:

  • 没有僵尸,没有记忆蠕动。
  • 有僵尸,没有附加调试过程,没有内存蠕变。
  • 与僵尸,附加调试过程,内存蠕变。