首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode工具使用大量内存。

Xcode工具使用大量内存。
EN

Stack Overflow用户
提问于 2011-08-30 09:58:47
回答 1查看 2.5K关注 0票数 6

好的,这是我的问题,如果这是一个复制品,我道歉。我搜索了一下,但没有找到任何我认为相关的东西。

当我从xcode运行工具并开始测试我的应用程序的内存泄漏或分配时,我的iMac最终开始非常非常慢地运行。

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

没过多久,它就耗尽了我所有的iMacs空闲内存(2 It ),然后它就开始滞后了。

无论如何,并不是每个应用程序都会发生这种情况。我已经用我下载的一些应用程序/项目做了同样的测试,仪器似乎只使用了大约250MB的空间,并且没有显著增加。

有没有什么明显的地方我做得不对?任何帮助都将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-30 12:25:19

仪器会消耗大量的内存。

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

100MB/s非常高。你能更准确地描述一下你在那段时间录制的内容吗?(你使用的工具,你记录的过程正在做什么,等等)。

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

通过将该工具集作为32位进程运行,可以在一定程度上减少内存使用量。

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

更新

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

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

分配

就其本身而言,如果您的应用程序没有创建大量的分配,那么分配应该不会消耗大量内存。

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

僵尸检测不记录每个引用计数操作仅跟踪活动僵尸检测allocs

  • disable

  • not c++ objects

泄露

仅当您想要泄漏历史记录时,

  • 才表示分配工具。

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

僵尸

  • 意味着分配工具。

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

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

笔记

  • 这个尖端的开发人员工具版本可能真的不稳定。如果你有问题,坚持使用官方版本是有帮助的。
  • I可以单独运行一个带分配的osx单元测试(主要是c/c++ api),它在记录时消耗大约1MB/s。有些地方似乎是错误的,但也许这表明在您的程序中的一个问题(许多暂时性的allocations?).
  • changing数据显示的方式和/或收费/焦点设置可能需要大量的内存。例如:“全部恢复”可能需要几GB来处理大样本。
  • 如果100MB/s是一个准确的数字,我会提交一个错误。我知道仪器会消耗很多内存,但对于记录一个空闲的应用程序来说,这是非常高的,即使预期仪器会消耗大量内存。

祝好运

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7237954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档