【问题标题】:Xcode Instruments using lots of memory.Xcode Instruments 使用大量内存。
【发布时间】:2011-11-06 11:12:53
【问题描述】:

好的,这是我的问题,如果重复,我深表歉意。我搜索但找不到任何我认为相关的内容。

当我从 xcode 运行仪器并开始测试我的应用程序是否存在内存泄漏或分配时,我的 iMac 最终开始运行非常缓慢。

这导致我在使用仪器时运行活动监视器,我注意到仪器每打开一秒就会占用越来越多的实际内存。大约 100MB 每秒。

它很快就消耗了我所有的 iMac 可用内存 (2gbs),然后开始滞后。

无论如何,这不会发生在每个应用程序中。我对我下载的一些应用程序/项目进行了相同的测试,仪器似乎只使用了大约 250mbs 的空间并且没有显着增加。

有什么明显的我做错了吗?任何帮助,将不胜感激。

谢谢。

【问题讨论】:

    标签: xcode ios-simulator instruments activity-monitor


    【解决方案1】:

    仪器会消耗大量内存。

    根据您录制的内容,您可能会减少其内存使用量。例如,您通常可以指定要记录什么(或不记录什么),或者降低采样频率(如果适用)。

    100MB/s 异常高。您能否更准确地描述您当时正在录制的内容? (您使用的仪器、您记录的过程正在做什么等)。

    Xcode 3 使用的内存要少得多 - 不确定 Instruments 是否也是如此。

    您可以通过将工具集作为 32 位进程运行来稍微减少内存使用量。

    最后,2GB 物理内存对于 Xcode + Instruments + iOS Sim 来说不算什么。 fwiw,我经常用 8 GB 或更多 GB 耗尽物理内存。嘘。幸运的是,当您需要 4 或 8GB 时,内存很便宜。

    更新

    我尝试使用分配、泄漏和僵尸工具

    如果必须,您可以单独运行这些测试。

    分配

    如果您的应用没有创建大量分配,分配本身不应消耗大量内存。

    为了减少使用此仪器的内存,您可以禁用一些您不感兴趣的选项:

    • 不记录每个引用计数操作
    • 仅跟踪活动分配
    • 禁用僵尸检测
    • 不识别 c++ 对象

    泄露

    • 暗示分配工具仅当您需要泄漏历史记录时

    泄漏检测本身会消耗大量内存,因为它会扫描内存,基本上是克隆您的分配。假设您分配了 100MB - 泄漏会定期暂停进程,克隆内存并扫描它的模式。这可能会比您的应用程序消耗更多的内存。 iirc,它在仪器中作为子进程执行。

    僵尸

    • 暗示分配工具。

    僵尸检测通常意味着引用计数记录。在调试僵尸时,永远不要释放它们是最有效的。如果你释放它们,你可能只会检测到短暂的僵尸(不确定仪器中是否有这样的选项......)。从不释放 objc 分配显然会消耗更多内存。在进程上运行泄漏将消耗更多内存,因为您的堆大小会更大 - 不应将泄漏和僵尸结合起来。

    您应该能够通过禁用其中一些选项并单独测试它们来减少总消耗。

    备注

    • 最前沿的开发者工具版本可能真的很不稳定。如果您遇到问题,坚持使用官方版本会有所帮助。
    • 我可以单独使用分配运行 osx 单元测试(主要是 c/c++ api),记录时消耗大约 1MB/s。似乎有问题,但这可能表明您的程序存在问题(许多临时分配?)。
    • 更改数据显示方式和/或充电/对焦设置可能需要大量内存。例如“全部恢复”可能需要几 GB 来处理大型样本。
    • 如果 100MB/s 是一个准确的数字,我会提交一个错误。我知道 Instruments 会消耗大量内存,但对于记录空闲应用而言,这非常高,即使预期 Instruments 会消耗大量内存。

    祝你好运

    【讨论】:

    • 我尝试使用工具进行分配、泄漏和僵尸,但无论如何它似乎消耗了大约相同数量的内存。一旦仪器达到大约 1.7GB,它似乎就会停止,但此时它对于正确测试我的游戏来说是滞后的。我对空闲内存有点不清楚。我的意思是第一次启动仪器时我有 2GB 的免费空间,这意味着应该包括 xcode 和模拟器。我知道你总共有 4GB,它是一个相当新的 iMac。我正在运行的只是我的 iPhone 游戏。我什至不必做任何事情。只是坐在第一个菜单屏幕上。
    • 我确实知道我在安装了 Xcode 3 的旧 iMac 上没有这个问题。但我不确定是它的 Xcode 还是我对游戏所做的更改。但我会尝试一些事情+你的建议然后回来。谢谢。
    • 我已经升级到 12Gbs 的内存。仪器消耗 10GB 的速度似乎保持在每秒 100MB 的情况下大约需要一分半钟,然后事情又变得非常缓慢。总之非常感谢。如果我想出其他任何东西,我会补充。
    • 不客气。如果您可以轻松地复制和记录这一点,我肯定会向 Apple 提交错误。祝你好运
    猜你喜欢
    • 2019-06-20
    • 2014-10-15
    • 1970-01-01
    • 2011-10-10
    • 2014-01-09
    • 2012-09-02
    • 2011-08-02
    • 2016-01-10
    • 2012-05-30
    相关资源
    最近更新 更多