应用程序进入后台时的内存占用量

时间:2012-06-08 22:28:00

标签: iphone objective-c ios memory instruments

在我的应用中,用户可以选择在屏幕上显示任意数量的对象。显示的每个都必须从文件中取消归档,放入内存,然后显示。通常,如果显示允许的最大对象数,我的应用程序的总内存消耗将增加到大约15 MB。如果我按下主页按钮并暂停应用程序然后返回应用程序,消耗的内存将降至约6 MB!一切仍然有用;对象仍然在内存中。这怎么可能?我在真实的设备上测试它。这是仪器的一个问题,还是某种缓存正在进行导航控制器,当应用程序进入后台时会被释放?任何会对此有所了解的事情都会受到欢迎。

编辑:

我现在才意识到仪器中两个“分配”工具的不同之处。在您分析应用时,您可以选择“泄漏”或“分配”。通过选择泄漏,我可以看到我的内存占用量的一个度量,其峰值大约为20 MB。通过选择分配,我看到了我的内存占用的另一个衡量标准,其峰值为230 MB!显然,每个人的衡量标准都存在一些差异;我应该看哪个?我一直在关注'泄漏'分配测量。


以下是应用程序中同一点上的两个最近的个人资料:

有了'泄漏',我得到了这个结果:

Leaks

通过'Allocations'我得到了这个结果:

Allocations

有人可以向我解释这种差异背后的意义吗?

1 个答案:

答案 0 :(得分:1)

据我所知,分配显示了总共分配的内存量,但没有消除已解除分配的位数。泄漏显示泄漏的内存量,换句话说,已分配但未释放的内存量。您必须始终将此目标设为零。为避免内存泄漏,请在项目中使用ARC,或确保保留释放所有内容。

如果您想测量应用程序消耗的内存量,我会选择仪器中的活动监视器,并显示实际数量。