ios - 内存压力和内存泄漏一样吗?

标签 ios memory-management

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

最佳答案

它们可能是相关的。

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

有点类似于内存泄漏的是引用循环(或使用 MRC 的保留循环)。这不是典型的内存泄漏,而是无法正确释放的对象所浪费的内存。

内存压力是您的应用占用过多内存。这可能是由于使用过多的内存造成的。示例可能是打开并尝试使用太多大图像或将太大文件加载到内存中。当然,随着时间的推移,泄漏和引用循环会浪费内存。这些最终可能会导致您的应用使用过多内存。

使用 Instruments 的 Allocations 和 Leaks 工具找出问题的原因。泄漏很容易发现。引用循环有点难。您必须观察内存占用量,看看它是否随着您的应用程序的使用而不断攀升。查看内存中的对象。如果您关闭一个 View Controller ,但 Instruments 仍然显示该 View Controller 有一个事件实例,那么您有一个引用循环使它保持事件状态。这需要解决。

如果您只是一次加载太多图片,既不是泄漏也不是引用循环,那么您需要找到另一种解决方案来避免一次加载太多。

关于ios - 内存压力和内存泄漏一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214875/

相关文章:

ios - Xcode - 如何修复 'NSUnknownKeyException' ,原因 : … this class is not key value coding-compliant for the key X"error?

c# - 如何避免对象分配?如何重用对象而不是分配它们?

ios - Objective-C 内存管理问题

objective-c - UIScrollView subview 容器错误地更改框架

objective-c - NSDictionary 初始化结果为 "EXC_BAD_ACCESS"

ios - Ionic Pro iOS 包/构建失败 - "ERROR: Job failed: exit status 1"

ios - 自定义 UIButton 不会更改其图像

c - 静态C字符串分配问题

C 关于指针内存分配的混淆?

iOS 7 应用程序因内存压力而终止