我有一个巨大的同步过程,我在其中下载并解压缩400-500 XML
个文件,然后解析它。有了这些数据,我将在RestKit API
上创建许多核心数据对象。一开始,我有一个内存警告,活动字节为450mb +,因为我没有使用自动释放池,只是试图在最后保存核心数据。
我修复了这个问题,现在经常保存到核心数据并使用@autoreleasepool
块。当我现在使用乐器运行我的应用程序时,我可以看到实时字节仅为20mb-30mb,总是释放内存并且永远不会增加大小。这个过程很有效。但是当我在没有乐器的情况下启动应用程序时,在查看文件之后我得到Memory Warning
。稍后应用程序崩溃。
使用和不使用instruments
工具运行应用程序有何不同?为什么它会以不同的结果结束?
答案 0 :(得分:4)
我正在添加这个答案,因为我很高兴我遇到过这个页面。
@borrrden 建议的部分是正确的。您可以配置在配置文件时将使用的Build设置。要进行配置,请转到Xcode并打开编辑方案对话框,然后在左侧菜单中选择 Profile XXX.app 。您将看到可以选择构建配置(调试或发布)。
@hooleyhoop 评论对于找到解决方案更为重要。即使您的配置文件构建配置设置为调试,分析和Xcode中的默认运行之间仍然存在差异。您可以在运行部分中指定诊断。就在那里,内存管理下有一个名为启用僵尸对象的选项。确保此选项未选中。
分析时不使用这些诊断运行设置。这是您正在经历的行为的解释。 “个人资料”部分也没有“诊断”标签。
结果是我的游戏(Gump)在启用了 Zombie Objects 的主菜单中无所事事5分钟后崩溃了。一旦我禁用 Zombie Objects ,我的游戏就会在无限的时间内运行。 45分钟后,仍然没有内存警告。