有没有一种方法可以查看自iOS应用启动以来的最大内存使用量?

3
如果有一个应用程序并且我们启动它,我们可以使用Instruments每秒查看内存使用情况,但是如果在初始化期间,内存一下子飙升到60MB,然后又降回来呢?(例如几个大型图形上下文、位图和CALayer)。
有没有一种方法可以看到自应用程序启动以来的最大值?我想到了一个原始的方法,就是在我们分配大型图形上下文、位图和CALayer之后添加一个虚拟循环,比如说一百万或一千万,这样内存使用量就会在几秒钟内保持不变,并且可以在Instruments中看到。
但是,如果有5个图层,我们应该分配一个图形上下文,获取位图,并将其设置为图层,然后立即释放图形上下文,因为它不再需要。然后我们继续处理下一个图形上下文、位图和图层,依此类推,而不是创建五个图形上下文、位图,然后在最后释放所有五个。但是要使用原始方法,我们需要在每个释放之前的所有五个地方添加虚拟循环。有没有更好的方法呢?

为什么不添加一个(仅供开发目的)的块,该块被放置在主队列上,计算内存使用情况,然后再次安排自己在主队列上(一遍又一遍),持续2到5秒钟。大部分内存将分配在主队列上,因此您可以在一段时间内快照每个运行循环调用。 - David H
1个回答

2

使用泄漏或分配模板,并选择分配工具。在分配工具旁边有一个图表。单击图表上方的时间轴并按住鼠标按钮。当您沿着时间轴拖动时,Instruments将显示该时间点分配的总内存量。

泄漏和分配模板之间的区别在于,泄漏模板将分配工具设置为跟踪所有分配,而分配模板将分配工具设置为仅跟踪活动分配。


如果内存分配在不到一秒钟的时间内完成,并且每秒记录一次图形,那么图形会错过它吗? - nonopolarity
图表的记录频率高于每秒一次。如果您沿着时间轴拖动,会出现一个工具提示,显示相对于录制开始的时间。您会看到时间可以显示毫秒的分数。您的应用程序分配内存的速度比Instruments跟踪它的速度快的可能性很小。 - Swift Dev Journal
我在想,如果图表每秒可以记录10个点,即每0.1秒一个点,但CPU运行速度为1GHz或模拟器上的2.6GHz,那么每秒就是十亿次操作,在0.1秒内就是1亿次操作,这之间可能会发生很多事情。 - nonopolarity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接