Instruments ObjectAlloc:实时字节和总字节的说明

Ros*_*oss 86 iphone xcode objective-c instruments

我正在使用Instument的ObjectAlloc工具,试图了解我的应用程序(iPhone)正在做什么以及它在何时何地进行操作.

我真的想要这些统计数据的基本解释:

  • 直播字节
  • 活的

  • 短暂的

  • 总字节数

当我试图弄清楚我的应用程序使用了多少内存时,我要查看Live Bytes或Total Bytes?这包括泄露的内存吗?什么是Transitory对象?

谢谢

Ken*_*agh 110

ObjectAlloc 跟踪程序运行时的所有内存分配和释放.

Living bytes, or Net bytes是多少记忆您的应用程序在你的时间表选择时间使用.这将包括泄漏的内存,因为泄漏的内存永远不会被释放.

#Living是一个特定大小/对象类型的分配发生了多少(并仍然分配).这在寻找泄漏时非常有用.

例如,如果你重复执行一个动作(比如进入一个模态视图控制器),并且你看到#Living一个对象每次都增长相同的数量,那么你可能正在泄漏那些对象.然后,您可以通过向下钻取并查看分配对象的确切代码行来确认,甚至可以查看每个对象创建的时间索引.

Overall bytes包括已发布的内存.为了性能优化目的,跟踪该数字很有用,但如果您只是想查看当前的内存占用或查找泄漏,则不行.

  • 是,对的.性能问题的常见原因是不止一次地意外运行相同的代码.分配工具是一种很好的注意方式.例如,即使额外的物体没有被泄露,你可能会说,"为什么我要制造3个物体呢?应该只有一个物体!" (4认同)
  • 您将在整体字节方面尝试优化什么?试图保持数字小意味着更好的表现? (3认同)
  • 如果您正在调整性能,那么您希望最小化应用程序在运行时所分配的数量(即使您没有泄漏所述分配.)过多的分配通常可能表明您做错了. (3认同)
  • 实时字节是您的应用当前使用的内存量.整体只是你的应用程序所做的所有分配(包括已被释放的内存). (2认同)

Pra*_*wal 18

来自apple docs的统计解释. 链接到文档

在此输入图像描述

在此输入图像描述