2012-11-15 93 views
1

我正在使用Instruments工具在我的应用程序中查找泄漏。在检查应用程序中的泄漏时,我也能看到分配选项卡。使用仪器工具中的分配

到目前为止,我从未使用过的分配选项卡在仪器工具。我只是检查了它可能是什么,我能够看到#All Allocations *字段。其中显示应用程序使用的总字节数。我很震惊地看到,规模在不断增加。

我应该担心的只有内存泄漏不分配? 而#All分配意味着当前应用程序的大小或整体应用程序的大小?

+0

还检查内存监视器以及,http://stackoverflow.com/questions/5518918/instruments-with-ios-why-does-memory-monitor-disagree-with-allocations – iDev

回答

2

这些分配对显示应用程序内存占用情况非常有用。如果您提供了一个modalViewController并解散它(并重复它),并且您看到您的应用程序活动字节数不断增加,那么就会出现问题。内存泄漏非常有用,可以查看分配的内存,并且您失去了对其的引用。使用ARC帮助,但仍可能有内存泄漏(例如循环引用)。分配还可以帮助您了解内存分配的位置,从不释放。例如一个NSArray对象,你没有使用,但你仍然活着。对于您的问题:

1)你应该担心这两者。

2)直播字节显示当前应用程序的大小(虚拟存储器)。 总体应用程序大小,正如它所说:“选定时间范围内的分配总数”。

您还可以检查this

+1

好的答案。我只想补充一点,增加应用程序中的活动字节可能会导致内存警告,并且应用程序可能会崩溃,因此在某些限制之间维护这些分配非常重要,以避免崩溃应用程序。 –

+1

从我所测试的内存警告中,也可能导致(内存需求/时间)的数量。你可以有一个现场80MB的应用程序没有任何问题,没有任何内存问题。但是如果你有一个1MB的应用程序,它突然开始涌向80MB,它可能会开始弹出一些警告。 – Peres

+0

@JackyBoy。非常感谢。你提供的链接和你的解释,让我对Live Bytes和Overall Bytes非常清楚。 – Cyril

1

的所有分配行显示实时字节列下堆的电流的大小,以及总体字节数列下不断分配的堆的字节总数。如果您分配一兆字节,则两列将增加1 MB。如果您随后释放该兆字节,则实时字节数将减少1 MB,但总体字节数不会更改。

直播字节是用于检测废弃或泄漏存储器是有用的。

总体字节通常不是很有用。当您遇到性能问题时您可能会使用它,并且想要查看是否由于分配过度导致流失。