我目前正在开发一款不久前开始的游戏。进展顺利,一切都运行顺利,但我决定尝试使用 XCode Instruments 来检查代码中是否存在任何泄漏。我正在使用 ARC,只有当其他对象被删除时才会添加新对象(我的游戏内部工作的一部分),但总内存大小随着它的运行而不断增长。
我的游戏是完全按程序生成的,不需要任何资源,它也只使用几个仅用颜色映射的多边形,因此没有纹理。我预计它只需要几个 MB 即可运行(一开始就是这样),但它会不断增长。
现在,我注意到一些有趣的事情......消耗大部分数据的是一个名为 IOAccelResource 的条目。这很奇怪,因为我不使用任何加速度计/陀螺仪/指南针数据。我的项目中甚至没有引用 CoreMotion 框架。
数据的第二个主要用途是四个不断增长的 malloc 的集合。还有一些保持相对不变。
但这两个条目不被程序视为泄漏。当我告诉 XCode 分析我的代码时,它没有指出任何问题。
所有其他条目都非常小,并且围绕同一点波动,或者只是保持不变。
Here is a screenshot of the troublesome entries:
有什么建议吗?
如果您指的是“总体字节数”或“#Overall(元素)”持续增长,这通常不是问题,因为它跟踪总内存使用情况(换句话说,它不考虑已释放的内存)。
您应该查看的是“Live Bytes”和“#Living(元素)”,并确保它符合您的期望。
您还将看到,如果“总体字节”持续增长,则不会使您的应用程序崩溃。另一方面,如果“Live Bytes”持续增长,您的应用程序将会崩溃。
Apple 已经意识到 Instruments 配置文件中包含太多信息,这就是为什么在 xCode5 中,它直接将重要信息提取到 xCode 中:运行应用程序时,单击导航器(左栏)中的第 6 个图标(调试导航器) xCode 的)。您将看到内存指示器,它将仅跟踪“实时字节”。
另外,如果您可以访问 WWDC 2013 视频,请查看会话 410:修复内存问题。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)