【问题标题】:How do you see the specific methods responsible for memory allocation in XCode Instruments?您如何看待 XCode Instruments 中负责内存分配的具体方法?
【发布时间】:2012-01-14 19:18:24
【问题描述】:

有人要求我尝试减少我收到的应用程序代码中的内存使用量。该应用程序在模拟器中运行良好,但在设备上它被终止或其他什么,调试时它进入“暂停”状态并且应用程序在设备上关闭。

在运行仪器时,我发现了泄漏,并修复了它们,但是正在进行大量分配。在启动后的几秒钟内,仪器分配跟踪显示“Malloc 16 Bytes”为 1,021 KB。这基本上是无用的信息,我需要查看内存分配的位置,但我似乎找不到任何有用的信息。我所能得到的更深入的检查是'dyld'、'libsystem_c.dylib'、'libCGFreetype.A.dylib'等分配了很多,但负责任的调用者永远不是来自应用程序源的可识别方法。

我如何才能看到哪些方法导致了最多的分配?我需要降低这种用法!谢谢

【问题讨论】:

    标签: xcode memory malloc instruments allocation


    【解决方案1】:

    打开扩展详细视图将显示内存分配的调用堆栈。选择“视图”>“扩展详细信息”以打开扩展详细信息视图。

    切换到调用树视图将帮助您找到在代码中分配内存的位置。使用跳转栏切换到调用树视图。

    【讨论】:

      【解决方案2】:

      1MB 没什么大不了的。在不使用 1MB 的情况下,你不能做太多的事情。

      WWDC 2010 (http://developer.apple.com/videos/wwdc/2010/) 中有一个很好的视频,其中介绍了使用仪器分析内存使用情况。标题是带有仪器的高级内存分析。可能会有 2011 年的更新视频。

      【讨论】:

      • 实际上启动后内存的总分配量为 38MB。我仍然无法获得分配回溯,但我现在正在观看视频。我的测试硬件是 iPad 1,对于内存使用而言,它似乎是一个非常精细的设备,许多应用程序似乎都存在因内存问题而被操作系统终止的问题。看看 Infinity Blade II :)
      • 啊。你不是说 1M 是个问题,而是说它是无用的信息。我明白。如果没有已知的充分理由,38M 有点吓人。我认为观看所有你能找到的关于 Instruments 的视频是一个很好的方法。乐器非常强大,但可能有点难以上手。这些视频可以提供很大帮助。
      • 原因是一个 UIScrollView,其中包含大约 1000 个 UIImage。我正在研究基于 UIScrollView 的可见区域动态加载图像并卸载不可见区域的最佳方法,以减少大量内存负载。
      • 带有非延迟加载图像的 UIScrollView 绝不是一个好主意。
      猜你喜欢
      • 2015-05-07
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 2014-04-16
      • 2011-11-26
      • 2010-11-06
      • 2014-01-09
      • 2012-05-05
      相关资源
      最近更新 更多