【问题标题】:XCode 5 Debug Navigator Memory disagrees with InstrumentsXCode 5 Debug Navigator Memory 与 Instruments 不一致
【发布时间】:2014-01-14 16:40:32
【问题描述】:

我正在开发我的第一个 ARC 和核心数据项目,此阶段基于 Xcode 的(通用)主从模板。 我注意到 Xcode5 在 Debug Navigator 中有一个内存显示,但是在使用它时发现它的图表与运行 Leaks&Allocations 跟踪时在 Instruments 中显示的 mem 使用情况几乎没有相似之处。 我已经使用模拟器(模拟 iPhone 和 iPad——以防万一“卸载”细节视图与后者产生影响)以及 iPad2 和 iPodTouch 上完成了仪器跟踪。结果大致相同:

iPhone 6.1 模拟器

  1. A 代--------1.13 MB
  2. B 代--------397.70 KB
  3. C 代--------76.96 KB
  4. D 代--------11.70 KB
  5. E 代--------1.56 KB
  6. F一代--------3.48 KB

整体增长 c30%

其中 A 代显示主表加载的增长,每个连续的代显示在详细视图已访问与之交互之后的增长(包含NSManagedObjects 的获取NSObjects 的创建)。 其他设备的增长趋势大致相似(A 代的增长是 iPad sim:1.42;iPad2:1.57;iPodTouch:0.94,但类似地下降)。

然而,根据 Debug Navigator,每个点的使用情况如下:

iPhone 6.1 调试导航器

  1. A 代--------4.2 MB
  2. B 代--------6.9 MB--增长 2.7
  3. C 代--------7.1 MB--增长 0.2
  4. D 代--------7.8 MB--增长 0.7
  5. E 代--------8.0 MB--增长 0.2
  6. F 代--------8.4 MB--增长 0.4
    整体增长 100%!

参考其他类似问题,我没有启用僵尸。 其他人是否看到过这样的差异?我倾向于相信 Instruments 而不是 Debug Navigator 的摘要图是对的吗?

附言。 Debug Navigator 的摘要图在运行真实设备时似乎不可用(都在 iOS5 版本上)。这是正常的吗?

【问题讨论】:

    标签: ios memory-leaks instruments xcode5.0.1


    【解决方案1】:

    这对你来说可能不是一个很好的答案,但这是我通过我所做的研究来解决这个问题的理由。

    调试导航器显示与“活动监视器”工具相同的内容。它没有显示您的应用当前分配的内存,而是显示操作系统允许您的应用当前使用的内存。

    假设我创建了一个 for 循环来在内存中创建大量对象,但随后我删除了其中的一半,因为它们不符合我的搜索条件(我知道编码不好,但在这里假设)。操作系统会从您的应用程序收到一个请求,要求使用全部内存来创建所有对象,但是在循环之后,当您检查仪器中的分配时,它只显示已保存的对象,因为垃圾收集取出了已删除的对象。操作系统可能知道也可能不知道垃圾收集事件,但它不会占用它刚刚给你的内存。我不确定从您的应用程序中提供/获取可用内存的开销,但我确信他们会考虑到这一点。我注意到,如果我让我的应用程序保持足够长的时间,操作系统会占用一些我没有使用的内存。

    只需将调试内存信息视为操作系统分配的应用程序的全部内存。您可能没有使用所有这些,但操作系统还是把它给了您(出于某种原因)。此数字将根据您应用的请求/使用情况而增加。由于内存压力警告或操作系统认为它可以安全地从您那里恢复内存,它会减少。它可能永远不会匹配 Instruments 分配的内存信息,因为在应用程序中使用的临时内存总是需要在某个地方分配,即使是很短的时间。

    再次,这是我的结论,基于我想知道你是同一个人的时候。希望对您有所帮助。

    【讨论】:

    • 谢谢,普茨。让 Sim 现在坐了一个小时,但没有下降。听起来,好像我不应该担心......
    • 我相信你是正确的普茨。在仪器中使用泄漏工具时,调试导航器内存统计数据是否与虚拟机内存相同?我想是的。
    猜你喜欢
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多