5

我有一个巨大的同步过程,我在其中下载并解压缩 400-500 个XML文件,然后解析它。有了这些数据,我将在RestKit API. 一开始,我有一个内存警告,实时字节为 450mb+,因为我没有使用自动释放池,只尝试在最后保存核心数据。

我修复了这个问题,现在经常保存到核心数据并使用 @autoreleasepool块。当我现在使用仪器运行我的应用程序时,我可以看到实时字节如何只有 20mb-30mb,总是释放内存并且永远不会变大。这个过程是有效的。但是当我在没有工具的情况下启动应用程序时,在查看文件后我得到一个Memory Warning. 后来应用程序崩溃。

instruments使用和不使用该工具运行应用程序有什么区别?为什么会以不同的结果结束?

4

1 回答 1

4

我添加这个答案是因为我很高兴看到这个页面。

@borrrden建议部分正确。您可以配置配置文件时将使用的构建设置。要配置它,转到 Xcode 并打开 Edit Scheme 对话框并在左侧菜单中选择Profile XXX.app。您将看到可以选择构建配置(调试或发布)。

在此处输入图像描述

@hooleyhoop评论对于找到解决方案更为关键。即使您的 Profile Build Configuration 设置为 Debug,Profiling 和 Xcode 中的默认 Run 之间仍然存在差异。您可以在运行部分中指定诊断。在那里,在内存管理下有一个名为Enable Zombie Objects的选项。确保未选中此选项。

在此处输入图像描述

分析时不使用这些诊断运行设置。这就是您正在经历的行为的解释。配置文件部分也没有诊断选项卡。


结果是我的游戏(阿甘正传)在启用Zombie Objects的主菜单中无操作 5 分钟后崩溃。一旦我禁用了Zombie Objects,我的游戏就可以无限运行。45 分钟后,仍然没有内存警告。

于 2013-08-14T23:32:01.247 回答