iOS不断增长的内存使用量

Ban*_*ble 5 debugging memory-leaks memory-management instruments ios

我目前正在开发一款我刚刚开始的游戏.进展很顺利,一切运行顺利,但我决定尝试使用XCode Instruments来检查代码中的任何泄漏.我正在使用ARC,只有删除其他对象时才会添加新对象(游戏内部工作的一部分),但总内存大小在运行时会不断增长.

我的游戏完全是程序生成的,不需要任何资源,它也只使用仅用颜色映射的几个多边形,因此没有纹理.我预计它应该只需要几个MB来运行(它开始时)但它只是不断增长.

现在,我注意到了一些有趣的事情......大部分数据的用处是名为IOAccelResource的条目.这很奇怪,因为我没有使用任何加速度计/陀螺仪/指南针数据.我甚至没有在我的项目中引用CoreMotion框架.

数据的第二个主要用途是四个不断增长的malloc集合.还有一些保持相对相同.

但是,这两个条目不被程序视为泄漏.当我告诉XCode分析我的代码时,它并没有指出任何问题.

所有其他条目都很小,并且在同一点附近波动,或者保持不变.

以下是麻烦条目的屏幕截图: 项

有什么建议?

Kha*_*azi 9

如果你指的是"整体字节数"或"#Overall(元素)"继续增长,这通常不是问题,因为它跟踪总内存使用量(换句话说,它不考虑已释放的内存).

您应该关注的是"Live Bytes"和"#Living(elements)",并确保它符合您的期望.

您还会看到,如果"整体字节数"不断增长,那么您的应用就不会崩溃.另一方面,如果"Live Bytes"继续增长,那将会使您的应用程序崩溃.

Apple已经意识到仪器配置文件中的信息太多,这就是为什么在xCode5中,它直接将重要信息提取到xCode中:运行应用程序时,单击导航器中的第6个图标(debug Navigator)(左栏) of xCode).您将看到内存指示器,它仅跟踪"实时字节".

此外,如果您可以访问WWDC 2013视频,请查看会话410:修复内存问题.

希望这可以帮助.

  • 我发现情况并非如此.当我查看乐器时,我的应用程序显示出完美的内存管理.当我在XCode中查看Memory图时,它显示我的应用程序不断分配大约1.5MB的内存,每次定时器触发时都不会释放.我想接受乐器的调查结果并继续前进,但我很担心. (12认同)
  • 同样在这里:Xcode内存计量器不断增长和增长,但Allocations + Leaks仪器表明内存正在得到妥善管理.不确定我应该得出什么结论...... (6认同)