为什么XCode和X之间的巨大差异仪器内存使用情况,还可以吗?

时间:2015-09-28 12:11:31

标签: ios iphone xcode cocoa-touch

我正在使用XCode 7.0和iOS 9.0 SDK& ARC,在iOS 5的iPhone 5S上进行的所有分析/测试。 EDIT :对于所有屏幕截图,它只是一次运行:我直接从xcode运行调试版本,然后手动将Instruments连接到它。因此截图全部来自完全相同的单次测试运行。此内存增长(每个xcode视图)100%可重现。

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

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

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

我花了大量时间倾注仪器和网络文章,但无济于事。任何人都可以回答这些问题吗?

  1. 为什么xcode内存使用与...之间存在差异?仪器 - 这是正常的吗?
  2. 我认为这些数字对于发布这样的应用程序而言太高了,我必须在上传到应用程序商店之前对其进行改进,对吗?
  3. 查看下面的屏幕截图,您可以提出任何可以开始寻找问题的建议吗?
  4. 非常感谢您的帮助。当然,我会发布任何有用的源代码,但我不确定从哪里开始...

    XCODE内存使用236 MB xcode mem usage

    INSTRUMENTS instruments vm summary

    instruments allocation summary

1 个答案:

答案 0 :(得分:4)

最常见的原因是您的配置。默认情况下,当您在Xcode中运行时,您将构建在调试模式下。在仪器中进行配置文件时,默认情况下会构建Release。您可以在方案中修改“运行”和“配置文件”配置以更改此设置。