【问题标题】:XCode Instruments Allocations: Look at Live Bytes or Overall Bytes?XCode Instruments 分配:查看实时字节还是整体字节?
【发布时间】:2011-11-26 07:47:44
【问题描述】:

我在我的 iOS 应用程序中收到一些内存警告,因此我正在运行 Instruments 来查看分配情况。我应该查看 * All Allocations * Live Bytes 还是 Total Bytes?

有人说如果我使用 22MB,iOS 可以关闭我的应用程序,这是来自 Live 或 Total bytes 部分吗?

【问题讨论】:

  • “有人说如果我使用 22MB,iOS 可以关闭我的应用程序”——你能改写一下吗?
  • 对不起,在这篇文章中:stackoverflow.com/questions/4167720/… 它提到如果你的应用程序使用超过 22MB,那么操作系统可能会杀死你的应用程序。
  • 没有真正的硬性规定——至少,没有任何出版,真的。不同的设备运行不同版本的 iOS 有不同的内存量;不能保证运行 4.3 的 iPad 上的上限不会完全在运行 5.0 的 iPad 2 的范围内。与往常一样,准确确定您的应用需要定位哪些设备和 iOS 版本,并使用最受限制的设备充当内存矿井中的金丝雀。
  • “Persistent Bytes”是“Live Bytes”的新等价物吗?

标签: ios xcode memory-management instruments


【解决方案1】:

Live Bytes 是当前使用情况,是您感兴趣的内容,总字节数包括所有已释放的分配。另一件事是查看图表并寻找峰值。例如,我在一个正在开发的应用程序中看到了大约 27MB 的巨大峰值,我知道我能够将峰值内存使用量降低到 8MB。

在您使用应用程序时也要注意,随着时间的推移,内存可能会大幅增长,但不会泄漏,只是不再使用。

有关内存列的描述,请参阅Explanation of Live Bytes & Overall Bytes

【讨论】:

  • 当使用过多内存时,是否存在释放视图的点?当我的实时字节略高于 10MB 时,我的应用程序正在释放我的视图。
  • 我看到这样的数字没有任何问题。如果您在转换中看到尖峰,您可能会看到可以做什么。当您将大型自动释放对象返回给您时,可以在这些情况下使用自动释放池的一些技巧。最好是在小型内存设备、iPodTouches、iPad1、iPhone 3GS 等上进行测试。搞定一堆东西,向设备发送电子邮件,玩 netflix 等。
  • 从 Xcode 4.5(即 ARMv6 之后)的角度来看,iPad 1 是仍受支持的新设备,其 RAM 量与视图将占用的存储量成正比.它和 3GS 都有 256mb 的 RAM,但 3GS 的像素不到五分之一。因此,这是测试记忆压力的最佳新方法。
  • 调试实时字节的工具?我正在运行一个 Cocos2D 游戏,它已暂停,实时字节数不断攀升。
猜你喜欢
  • 2013-06-14
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 2012-11-03
  • 2017-12-20
  • 2011-08-24
  • 1970-01-01
相关资源
最近更新 更多