iOS - 使用分配和内存监视器(无物理内存)使用和了解仪器

时间:2012-02-26 00:48:51

标签: ios memory instruments

我正在理解如何更好地使用乐器。我刚刚完成了泄漏管理练习,而且仪器报告的泄漏很少。我稍后会想出来的。与此同时,我的应用程序崩溃了,它似乎与内存压力有关。

所以我在仪器中看了这个。我正在使用Allocations和Memory Monitor。分配显示了相当稳定的3到4 MB Live字节,而我只是让我的应用程序初始化并达到平衡。但是,总字节数会超过50 MB。在我查看内存监视器之前,我没有想太多,我发现内存使用率上升和下降,导致内存警告。 (我觉得奇怪的是,这并没有同时显示在分配图上。)

应用程序应处于平衡点,但显然不是。我的问题是如何使用工具来帮助我理解为什么内存使用会上升和下降?

1 个答案:

答案 0 :(得分:7)

作为调试工具的仪器非常出色。根据我的理解,你一直在尝试使用分配工具,所以我会重复一遍。分配详细说明了应用程序在执行期间分配的对象数量,以及它们的内存中引用,位置,甚至是分配所述对象的调用代码。当仪器开始运行分配工具时,您的应用程序开始将所有分配报告为蓝点,随着应用程序的执行,这些分配会越来越高(当然,您应该分配越来越多的对象)。总字节数显示应用程序添加的每个分配的内存量。我想强调一下你的情况:这并不意味着你的应用目前正在使用50 MB的内存!,这只是意味着你的应用已经使用了 50 mb。您的应用显然仅限于设备的内存容量,当您考虑第一代时,3-4 MB并不是很多。 iPhone有大约128mb,但对于更复杂的应用程序,操作系统通常会杀死其他应用程序,然后再杀死你的应用程序。

对于带有尖峰的其他分配图,而不是连续的线图,即详细说明在该时间点进行的分配数。通常情况下,尖峰可以被忽略,除非在很短的时间内出现很多大的尖峰。

无论如何,为了解决您的特定内存警告问题,它实际上取决于您接收的内存警告数量以及警告的级别。至于你的泄漏,我唯一的建议是:尽快压制它们!当您看到泄漏(泄漏工具中的红色条)时,单击该栏并找到泄漏的对象。当您选择泄漏的对象,然后选择右侧边栏时,它将显示泄漏的代码。当您双击右侧边栏的任何部分时,它甚至会打开泄漏源自的特定线和类!