为什么XCode和仪器内存使用的巨大差异,是否可以?

我正在使用XCode 7.0和iOS 9.0 SDK和ARC,所有的分析/testing都是在iOS 5的iPhone 5S上完成的。 编辑 :所有截图都是单独运行的:我直接从xcode运行debugging版,然后手动附上仪器。 所以截图全部来自完全相同的单一testing运行。 这种内存增长(每个xcode视图)是100%可重现的。

我的应用程序下载ZIP文件,解压缩,并将它们添加到相机胶卷。 我已经确定了configuration文件和捕获内存泄漏(即缺lessCGContextRelease)以及使用@autoreleasepool

在解压缩的过程中,在xcode中,我看到内存使用率快速上升,直到解压缩完成时才结束,我无法解释这一点,因为在乐器中没有任何对象可以看到。 内存永远不会被释放(每个xcode的内存视图)。 在testing运行结束时,我看到使用了236MB,在解压缩时没有内存警告。 如果使用Instruments的分配工具,我会看到50.2MB的堆和匿名的VM。 这是一个巨大的差异!

我做的第一件事是假设[UIImage imageNamed:是怪(caching等),因为我有很多animationUIImageViews,所以我花了时间从代码中删除所有imageNamed,并使用imageWithContentsOfFile代替。 这根本没有帮助。 我添加解压缩的图像到iOS 8 Photo框架的相机胶卷,像这样: [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:[NSURL fileURLWithPath:filePath]]

我花了相当多的时间通过仪器和networking文章倾倒,但无济于事。 谁能回答这些问题吗?

  1. 为什么xcode内存使用和仪器之间的差异 – 这是正常的吗?
  2. 我认为这些数字对于发布这样的应用程序来说太高了,我必须在上传到应用程序商店之前对其进行改进,对吧?
  3. 看下面的截图可以提出任何build议,我可以开始寻找问题(S)?

非常感谢您的帮助。 当然我会发布任何有用的源代码,我只是不知道从哪里开始…

XCODE MEMORY使用236 MB xcode的mem使用情况

仪器 仪器vm总结

文书分配总结

最常见的原因是你的configuration。 默认情况下,当你在Xcode中运行时,你可以在Debug模式下build立。 当您在乐器中进行configuration文件时,默认情况下会生成发行版。 您可以修改您的scheme中的运行和configuration文件configuration以更改此设置。