在XCode中内存不足,但在仪器中没有

时间:2014-08-21 12:23:46

标签: ios objective-c xcode memory xcode-instruments

我的应用内存不足。在XCode的内存报告中,我可以看到设备上的内存使用率在关闭之前上升到500Mb以上。

当在仪器中进行分析时(使用分配工具或泄漏工具),这不会发生。该过程最多可运行约100Mb,并在运行任务的内存密集部分时进行平衡。在仪器中运行时,应用程序不会崩溃。

会导致这种差异的原因是什么?

运行的激烈过程是利用UIWebView来确定多个内容页面的长度。 Web视图位于后台并加载页面。在加载完成后,它会计算大小并加载下一页,直到所有页面计算出它们的长度。

由于我无法在Instruments中遇到相同的内存问题,因此我在所有主要部分上添加了对init和dealloc方法的记录,并且可以确认这些是按预期分配和释放的。

之后,我尝试假设分配和释放正确发生,但我只是分配比系统重新分配内存更快。我尝试在内存耗尽之前提前停止进程以查看内存使用量是否会下降。 XCode的内存报告确实报告了一小部分,但不是很大 - 即使让它静置几分钟。

我的下一步是尝试简化流程,直到问题消除为止。

有没有其他人遇到类似这样的事情,其中​​仪器中的应用程序与仪器中的应用程序完全不同,或者对可能导致该问题的原因有任何解释?

1 个答案:

答案 0 :(得分:3)

我会看两个方案并确保设置相同。分析器可能正在使用非调试配置和"运行"正在使用调试配置。

我要特别注意"启用Zombie Objects"在" Diagnostics" " Run"的标签配置,因为它可以占用内存,跟踪所有解除分配的对象。僵尸是一个很棒的诊断工具,但你想关闭它以确保你回收与解除分配的对象相关的所有内存。

有关获取方案配置的信息,请参阅https://developer.apple.com/library/mac/recipes/xcode_help-scheme_editor/Articles/SchemeDialog.html