Xcode Instruments using lots of memory.

Tas*_*sik 6 xcode instruments activity-monitor ios-simulator

Okay so this is my issue and I apologize if its a duplicate. I searched but couldn't find anything I considered relevant.

When I run instruments from xcode and begin testing my application for memory leaks or allocations my iMac eventually begins to run very very slowly.

This caused me to run activity monitor while using instruments and I notice that every second instruments is open it takes up more and more real memory. Roughly 100MB's a sec.

It doesn't take long for it to consume all my iMacs free memory (2gbs) and then it starts to lag.

Anyways this doesn't occur with every application. I've done the same test with some application/projects I downloaded and instruments only seems to use about 250mbs of space and doesn't dramatically increase.

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

谢谢。

jus*_*tin 5

乐器消耗大量内存。

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

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

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

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

最后,Xcode + Instruments + iOS Sim没有2GB的物理内存。首先,我经常耗尽8 GB或更多的物理内存。嘘 幸运的是,当您需要4或8GB时,内存很便宜。

更新资料

我尝试使用用于分配,泄漏和僵尸的工具

如果需要,您可以单独运行这些测试。

分配

就其本身而言,如果您的应用程序没有创建大量分配,分配不应占用大量内存。

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

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

泄漏

  • 仅当您需要泄漏历史记录时,才表示分配工具。

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

僵尸

  • 意味着分配工具。

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

您应该可以通过禁用其中一些选项并分别对其进行测试来减少总消耗量。

笔记

  • 最前沿的Developer Tools版本可能真的很不稳定。如果您遇到问题,则可以坚持使用官方版本。
  • 我可以单独使用分配来运行osx单元测试(主要是c / c ++ api),记录时消耗约1MB / s。似乎有些问题,但这也许表明您的程序存在问题(许多瞬时分配?)。
  • 更改数据显示方式和/或充电/对焦设置可能需要大量内存。例如,“全部还原”可能需要几个GB才能处理大样本。
  • 如果100MB / s是一个准确的数字,我会提出一个错误。我知道Instruments会消耗很多内存,但是对于录制一个空闲的应用程序来说这是很高的,即使期望仪器会消耗很多内存。

祝好运