我目前正在开发一款我刚刚开始的游戏。进展很顺利,一切运行顺利,但我决定尝试使用XCode Instruments来检查代码中的任何泄漏。我正在使用ARC,只有在删除其他对象时才添加新对象(游戏内部工作的一部分),但总内存大小在运行时会不断增长。
我的游戏完全是程序生成的,不需要任何资源,它也只使用仅用颜色映射的几个多边形,所以没有纹理。我希望它只需要几个MB来运行(它开始时),但它只是不断增长。
现在,我注意到了一些有趣的事情......大部分数据的用处是名为IOAccelResource的条目。这很奇怪,因为我没有使用任何加速度计/陀螺仪/指南针数据。我甚至没有在我的项目中引用CoreMotion框架。
数据的第二个主要用途是四个不断增长的malloc集合。还有一些保持相对相同。
但这两个条目不被程序视为泄漏。当我告诉XCode分析我的代码时,它并没有指出任何问题。
所有其他条目都很小,并且在同一点附近波动,或者保持不变。
以下是麻烦条目的屏幕截图:
有什么建议吗?
答案 0 :(得分:9)
如果你指的是“整体字节”或“#Overall(元素)”继续增长,这通常不是问题,因为它跟踪总内存使用量(换句话说,它不考虑已释放的内存)。
您应该关注的是“Live Bytes”和“#Living(elements)”,并确保它符合您的期望。
您还会看到,如果“整体字节数”不断增长,那么您的应用就不会崩溃。另一方面,如果“Live Bytes”继续增长,那将会使您的应用程序崩溃。
Apple已经意识到仪器配置文件中的信息太多,这就是为什么在xCode5中,它直接将重要信息提取到xCode中:运行应用程序时,单击导航器中的第6个图标(调试导航器) (xCode的左栏)。您将看到内存指示器,它将仅跟踪“实时字节”。
此外,如果您可以访问WWDC 2013视频,请查看会话410:修复内存问题。
希望这有帮助。