当我从xcode运行仪器并开始测试我的应用程序的内存泄漏或分配时,我的iMac最终开始运行得非常慢.
这导致我在使用乐器时运行活动监视器,我注意到每个第二个乐器都打开它会占用越来越多的实际内存.大约每秒100MB.
它不需要很长时间就可以消耗我所有的iMacs免费内存(2gbs)然后开始滞后.
无论如何,每次申请都不会发生这种情况.我已经完成了与我下载的一些应用程序/项目相同的测试,仪器似乎只使用了大约250mbs的空间并且没有显着增加.
有什么明显的东西我做错了吗?任何帮助,将不胜感激.
谢谢.
解决方法 乐器消耗大量内存.根据您录制的内容,您可以减少其内存使用量.例如,您通常可以指定记录什么(或不记录),或者降低采样频率(如果适用).
100MB / s非常高.你能否更准确地描述你当时录制的内容? (您使用的工具,您记录的过程是什么,等等).
Xcode 3使用了更少的内存 – 不确定是否也是仪器的情况.
您可以通过将工具集作为32位进程运行来减少内存使用量.
最后,2GB物理内存对Xcode Instruments iOS Sim来说毫无意义. fwiw,我经常用8 GB或更多GB耗尽物理内存.嘘.幸运的是,当你需要4或8GB时,内存很便宜.
更新
I trIEd using instruments for Allocations,Leaks and ZombIEs
如果必须,您可以单独运行这些测试.
分配
如果您的应用程序没有创建大量分配,分配本身不应消耗大量内存.
要使用此仪器减少内存,您可以禁用一些您不感兴趣的选项:
>不记录每个引用计数 *** 作
>仅跟踪活动分配
>禁用僵尸检测
>不识别c对象
泄漏
>暗示分配工具仅在您需要泄漏历史记录时.
泄漏检测本身会占用大量内存,因为它会扫描内存,基本上会克隆您的分配.假设你有100MB的分配 – 泄漏将定期暂停进程,克隆内存并扫描它的模式.这可能比你的应用消耗更多的内存. iirc,它作为乐器中的子进程执行.
植物大战僵尸
>暗示分配工具.
僵尸检测通常意味着参考计数记录.调试僵尸时,永远不要释放它们是最有效的.如果你释放它们,你可能只会发现瞬态僵尸(不确定是否有一个选项可用于乐器……).永远不会释放objc分配显然会消耗更多内存.然后,在进程上运行泄漏会消耗更多内存,因为堆大小会更大 – 不应该组合泄漏和僵尸.
您应该能够通过禁用其中一些选项并单独测试它们来减少总消耗.
笔记
>最新的开发者工具版本可能非常不稳定.如果您遇到问题,可以坚持正式发布.
>我可以单独使用分配运行osx单元测试(主要是c / c APIs),录制时消耗大约1MB / s.看似错误的东西,但也许这表明你的程序存在问题(很多瞬态分配?).
>更改数据的显示方式和/或充电/对焦设置可能需要大量内存.例如“全部还原”可能需要几GB才能处理大样本.
>如果100MB / s是一个准确的数字,我会提交一个错误.我知道仪器消耗了大量内存,但这对于录制空闲应用来说非常高,即使期望乐器消耗大量内存.
祝好运
总结以上是内存溢出为你收集整理的Xcode Instruments使用大量内存.全部内容,希望文章能够帮你解决Xcode Instruments使用大量内存.所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)