我正在开发一个显示图像的应用程序,由于 iPad 2 上的内存压力过大,我的应用程序被终止。所以我想知道内存压力和内存泄漏是否相同?
最佳答案
它们可能是相关的。
内存泄漏是您永远无法找回的内存。如果您的项目使用 ARC,则内存泄漏非常罕见。
有点类似于内存泄漏的是引用循环(或使用 MRC 的保留循环)。这不是典型的内存泄漏,而是无法正确释放的对象所浪费的内存。
内存压力是您的应用占用过多内存。这可能是由于使用过多的内存造成的。示例可能是打开并尝试使用太多大图像或将太大文件加载到内存中。当然,随着时间的推移,泄漏和引用循环会浪费内存。这些最终可能会导致您的应用使用过多内存。
使用 Instruments 的 Allocations 和 Leaks 工具找出问题的原因。泄漏很容易发现。引用循环有点难。您必须观察内存占用量,看看它是否随着您的应用程序的使用而不断攀升。查看内存中的对象。如果您关闭一个 View Controller ,但 Instruments 仍然显示该 View Controller 有一个事件实例,那么您有一个引用循环使它保持事件状态。这需要解决。
如果您只是一次加载太多图片,既不是泄漏也不是引用循环,那么您需要找到另一种解决方案来避免一次加载太多。
关于ios - 内存压力和内存泄漏一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214875/