0

我很难弄清楚我的应用程序在哪里泄漏。我已经使用“仪器”分析应用程序通过分配和堆快照对其进行了测试。这就是我得到的:

在此处输入图像描述

如您所见,分配正在增加。每次我在两个视图之间转换时,它都会增加,并带有淡入淡出效果。当我通过 heapshot/heapshots 时,我应该查看以下哪些 heapshots,以便找到泄漏以及我应该注意哪些类型的对象?

提前感谢您的帮助:)。

4

2 回答 2

4

如果您不再持有对它的任何引用,ARC 只能释放内存。由于泄漏工具没有指示任何“真正的”泄漏(在您无法再访问的内存的意义上),您可能会看到一个废弃内存的情况。您仍然持有对不再需要的对象的引用,因此它们不会被释放。

在基线之后检查哪个快照并不重要。快照中的对象列表可能有点压倒性……但通常有助于将其过滤到您自己的类中。您可以通过在右上角的搜索字段中输入您的类前缀来做到这一点。如果你的类都没有出现在快照中,你至少可以寻找你直接使用的类。

还要确保在分配工具的检查器窗格中启用“记录引用计数”选项。启用此功能后,您可以单击快照中列出的对象旁边的小右箭头(不是类名,而是由其内存地址表示的对象)并查看该对象的完整历史记录。这样可以更容易地查看谁持有对它的引用。

希望这可以帮助!

于 2013-05-12T10:20:07.283 回答
0

使用“分析”选项构建您的代码;追踪并消除每一个问题。

于 2013-05-11T15:43:06.497 回答