好的,这是我的问题,如果这是一个复制品,我道歉。我搜索了一下,但没有找到任何我认为相关的东西。
当我从xcode运行工具并开始测试我的应用程序的内存泄漏或分配时,我的iMac最终开始非常非常慢地运行。
这导致我在使用仪器时运行活动监视器,我注意到仪器每打开一秒,它就会占用越来越多的实际内存。大概是每秒100MB。
没过多久,它就耗尽了我所有的iMacs空闲内存(2 It ),然后它就开始滞后了。
无论如何,并不是每个应用程序都会发生这种情况。我已经用我下载的一些应用程序/项目做了同样的测试,仪器似乎只使用了大约250MB的空间,并且没有显著增加。
有没有什么明显的地方我做得不对?任何帮助都将不胜感激。
谢谢。
发布于 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
泄露
仅当您想要泄漏历史记录时,
泄漏检测本身会消耗大量内存,因为它会扫描内存,基本上是克隆您的内存分配。假设你分配了100MB的内存-- leaks会周期性地暂停进程,克隆内存,并扫描它的模式。这可能会比你的应用消耗更多的内存。iirc,它是作为仪器中的一个子进程执行的。
僵尸
僵尸检测通常意味着引用计数记录。在调试僵尸时,最有效的方法是永远不要释放它们。如果你真的释放了它们,你可能只会检测到暂时的僵尸(不确定仪器中是否有这个选项...)。从不释放objc分配显然会消耗更多内存。在进程上运行泄漏将消耗更多的内存,因为您的堆大小将更大-泄漏和僵尸不应该组合在一起。
您应该能够通过禁用其中一些选项并单独测试它们来减少总消耗。
笔记
祝好运
https://stackoverflow.com/questions/7237954
复制相似问题