1

我正在尝试增强非 ARC 应用程序中的内存分配。有一些对象,即使它们的引用计数为 0,它们也被列为两个 heapshot 之间的持久对象。

这是我的主要观点:在此处输入图像描述

让我们以第一个 heapshot (0x6deb180) 中选定的 LSBookChapter 为例。这是该对象的历史:

在此处输入图像描述

为什么那个对象没有被释放?如果引用计数为 0,我无法确定何时过度保留该对象..

4

2 回答 2

6

您可能打开了僵尸检测功能吗?

僵尸检测不会导致任何内容被释放,但是 - 可能 - 保留计数将降至零,并且更有用的是,您将看到导致保留和释放导致事件之间的一一对应关系。


此外,如果您没有打开“仅跟踪实时分配”,那么您将在 Instruments 中看到该对象被释放后,保留计数为 0,但它实际上已被释放。

于 2012-06-13T16:28:48.310 回答
1

在我之前的应用程序中,我和你现在有一些担忧,因为我没有泄漏,但内存在增长。经过一番研究,我偶然发现了这一点。我确实试图在他的文章上做一些捷径,但最后我只是阅读了整篇文章以真正理解哪里出了问题。是的,我能够查明我遇到的每一个问题。我可能会说我有很多。

对于您的特定问题,我没有做您现在正在尝试的操作:在不同的堆中查看对象的 retainCount。老实说,我认为这是在浪费时间。我的主要目标是确保如果我做某事并且我反转它,内存不应该增加,或者如果它应该稍微增加(快速示例:进入一个新的UIViewController并按下按钮)。

于 2012-06-13T10:41:52.890 回答