iOS 不断增长的内存使用量

标签 ios debugging memory-management memory-leaks instruments

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

我的游戏完全是程序生成的,不需要任何资源,它也只使用了几个只用颜色映射的多边形,所以没有纹理。我预计它应该只需要几 MB 就可以运行(开始时是这样),但它只会不断增长。

现在,我注意到一些有趣的事情……使用大部分数据的是一个名为 IOAccelResource 的条目。这很奇怪,因为我不使用任何加速度计/陀螺仪/罗盘数据。我什至没有在我的项目中引用 CoreMotion 框架。

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

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

所有其他条目都非常小,并且围绕同一点波动,或者只是保持不变。

这是麻烦条目的屏幕截图: Entries

有什么建议吗?

最佳答案

如果您指的是“Overall Bytes”或“#Overall (elements)”继续增长,这通常不是问题,因为它跟踪总内存使用量(换句话说,它不考虑释放的内存).

您应该查看的是“Live Bytes”和“#Living(元素)”,并确保它符合您的期望。

您还会看到,如果“总字节数”持续增长,您的应用不会崩溃。另一方面,如果“Live Bytes”持续增长,那会使您的应用崩溃。

Apple 已经意识到 instruments 配置文件中的信息太多,这就是为什么在 xCode5 中,它直接将重要信息提炼到 xCode 中:当运行您的应用程序时,单击导航器中的第 6 个图标(调试导航器) (xCode 的左栏)。您将看到内存指示器,它将仅跟踪“事件字节数”。

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

希望这对您有所帮助。

关于iOS 不断增长的内存使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19129881/

相关文章:

ios - Swift 对象的安全内存

ios - 覆盖或扩展 UIColor 以支持某些协议(protocol)

android - 我如何设置Android :Debuggable false

asp.net - 将 Visual Studio 本地 IIS 7 调试虚拟路径设置为/

react-native - React Native 中客户端日志记录和错误处理的最佳实践

WebLogic Server 上的 Java Web 应用程序内存使用情况

c++ - C中分配器的错误

memory-management - Matlab:避免在 mex 中分配内存

ios - 从 Realm 查询中排除对象 - 尝试按相关性排序(Swift)

iphone - iOS Persist View 层值?