使用大量内存的Xcode仪器。

使用大量内存的Xcode仪器。,xcode,ios-simulator,instruments,activity-monitor,Xcode,Ios Simulator,Instruments,Activity Monitor,好的,这是我的问题,如果是重复的,我道歉。我搜索了一下,但找不到任何我认为相关的东西 当我从xcode运行instruments并开始测试我的应用程序的内存泄漏或分配时,我的iMac最终开始运行得非常慢 这导致我在使用仪器时运行activity monitor,我注意到仪器每打开一秒钟就会占用越来越多的实际内存。大约每秒100MB 没过多久,它就消耗掉了我所有的iMac可用内存(2GB),然后开始延迟 无论如何,并非每个应用程序都会出现这种情况。我对我下载的一些应用程序/项目做了同样的测试,仪器

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

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

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

没过多久,它就消耗掉了我所有的iMac可用内存(2GB),然后开始延迟

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

有没有什么明显的错误?任何帮助都将不胜感激


谢谢

仪器消耗大量内存

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

100MB/s是异常高的。你能更准确地描述一下你当时录制的内容吗?(您使用的仪器、您记录的过程等)

Xcode 3使用了更少的内存-不确定仪器是否也是如此

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

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

更新


我试着用仪器进行分配、泄漏和僵尸

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

分配

如果你的应用程序没有创建大量的分配,那么分配本身就不应该消耗大量内存

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

  • 不要记录每个参考计数操作
  • 仅跟踪活动allocs
  • 禁用僵尸检测
  • < LI>不识别C++对象< /LI>
泄漏

  • 仅当您需要泄漏历史记录时,才使用该仪器
泄漏检测本身会消耗大量内存,因为它会扫描内存,基本上是克隆您的分配。假设您已分配100MB-泄漏将定期暂停进程,克隆内存并扫描其模式。这可能会消耗比应用程序更多的内存。iirc,它在instruments中作为子进程执行

僵尸

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

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

注释

  • 最前沿的开发工具版本可能非常不稳定。如果你有问题,坚持官方发布会有帮助
  • 我可以单独使用分配运行osx单元测试(主要是c/c++API),它在录制时消耗大约1MB/s。似乎有点不对劲,但这可能表明您的程序中存在问题(许多临时分配?)
  • 更改数据显示方式和/或充电/聚焦设置可能需要大量内存。e、 g.“全部还原”可能需要几GB的空间来处理大样本
  • 如果100MB/s是一个准确的数字,我会提交一个bug。我知道仪器会消耗大量内存,但对于录制空闲应用程序来说,这是非常高的,即使预计仪器会消耗大量内存

祝你好运

我曾尝试使用工具进行分配、泄漏和僵尸,但不管怎样,它似乎消耗的内存量都差不多。一旦仪器达到约1.7GB,它似乎停止了,但在这一点上它的拉吉,以适当地测试我的游戏。我对空闲内存有点不清楚。我的意思是,当我第一次启动仪器时,我有2GB的空闲空间,这意味着应该包括xcode和模拟器。我知道你们总共有4GB,这是一款相当新的iMac。我只是在玩我的iPhone游戏。我甚至不需要做任何事情。只是坐在第一个菜单屏幕上。我知道我的旧iMac没有这个问题,它有Xcode 3。但我不确定它是Xcode还是我对游戏所做的更改。但我会试试你的建议,然后回来。谢谢。我已经升级到12GB的内存。它似乎保持了每秒100MB的速度,仪器消耗10GB大约需要一分半的时间,然后速度又变慢了。无论如何,非常感谢你。如果我能想出其他的办法,我会再补充一点。不客气。如果你能很容易地重新制作和记录这个,我肯定会向苹果提交一个bug。祝你好运