内存压力与内存泄漏相同吗?

时间:2014-03-06 04:21:51

标签: ios memory-management

我正在开发一个显示图像的应用程序,由于iPad 2上的内存压力很大,我正在终止应用程序。所以我想知道内存压力和内存泄漏是否相同?

2 个答案:

答案 0 :(得分:2)

他们可以相关。

内存泄漏是你永远无法回复的记忆。如果您的项目使用ARC,则内存泄漏非常罕见。

类似于内存泄漏的类型是参考周期(或使用MRC保留周期)。这是不是经典泄漏的内存,但是对于无法正确释放的对象而言,这是浪费的内存。

内存压力是你的应用程序只是占用太多内存。这可能是由于使用太多内存造成的。示例可能是打开并尝试使用太多大图像或将太大的文件加载到内存中。当然,泄漏和参考周期会浪费内存。这些最终可能导致您的应用使用太多内存。

使用仪器的Allocations and Leaks工具找出问题的原因。泄漏很容易发现。参考周期有点困难。您必须观察内存占用,并在使用应用程序时查看它是否会随着时间的推移而不断攀升。查看内存中的对象。如果您关闭视图控制器但是Instruments仍然显示该视图控制器的实时实例,那么您有一个参考周期使其保持活动状态。这需要修复。

如果您只是一次加载太多图像,既不是泄漏也不是参考周期,那么您需要找到另一种解决方案以避免一次加载太多。

答案 1 :(得分:0)

我不熟悉内存压力,但我确实专注于修复一些内存泄漏。内存泄漏意味着分配的内存无法返回。例如,指向存储器块的点变量指向另一个存储器块,第一个存储器块被泄漏,不能再回来。因此,您的应用程序会申请越来越多的内存而不会释放它已经应用的内容。它也可能会造成记忆压力。