5

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

我自己的仪器,以及仪器,没有泄漏,没有废弃的内存,什么都没有……平坦。在 iOS 4、5、6.1 下也曾经出现过这种情况。然而,在我提交之前的测试概要中,当在设备上进行分析时,我看到每 2 分钟增加 1Mb,游戏处于空闲状态,即没有任何用户交互(见下图)。

在此处输入图像描述

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

  1. 你有什么建议吗?

  2. 我找不到很多关于 IOAccelResource 的信息……你们中的任何人都可以指出我正确的阅读方向吗?如果这确实与 cocos2d 相关,我不介意在那里挖掘,但我不知道从哪里开始寻找。

  3. 此外,我希望尽可能以“接近发布”的方式运行构建,并且仍然能够随着时间的推移测量内存占用。你能给我推荐一种测量过程大小的方法吗?

    蒂亚。

4

5 回答 5

2

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

于 2013-10-24T18:08:00.580 回答
1

有根据的猜测:UIAccelerometer 可以使用 IOAccelResource。这听起来确实像是加速度计 I/O 之类的东西。

由于 UIAccelerometer 在 iOS 7 中已弃用但仍被 cocos2d 使用,因此可能存在 Apple 没有发现或关心的问题。只是为了测试尝试从 cocos2d 中删除任何 UIAccelerometer 引用,看看这是否会消失。发布版本不应影响 Instruments 内存监控,并且存档版本只是从代码角度来看的发布版本。

于 2013-10-07T21:00:46.090 回答
1

您可以尝试通过 Instruments 使用 heapshot 分析来监控分配。这应该让您知道分配额外内存的位置。也许你已经尝试过了?

于 2013-10-07T23:39:17.830 回答
1

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

于 2014-08-15T19:54:50.337 回答
1

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

总之 :

  • 没有僵尸,没有记忆蠕动。
  • 有僵尸,没有附加调试过程,没有内存蠕动。
  • 僵尸,附加调试过程,内存蠕变。
于 2014-08-15T21:11:59.390 回答