为什么废弃的内存不被视为ios中泄露的内存

时间:2013-08-22 06:07:29

标签: ios objective-c instruments

请告诉我为什么被遗弃的记忆不被视为泄露的记忆?

在调用main对象的dealloc之后,对象引用将如何出现。 ?

根据仪器,

泄露的内存是:已分配的内存已无法访问。

废弃的内存:从未使用的可访问分配的内存。(浪费或遗忘的内存)

Ex:在关闭popOverController之后,该viewController中的所有变量都被释放,根据INSTRUMENTS没有泄漏。

但是当通过Mark Heap检查时,它告诉我一些记忆正在变得浪费。

释放所有变量。 一旦调用了视图dealloc,它就会释放所有相应的对象,对吧? 如果它无法释放,那么它将受到泄漏。

Plz帮助我,如何抓住这个被抛弃的记忆?这背后的主要原因(开发中最常见的错误)是什么?

由于

1 个答案:

答案 0 :(得分:1)

泄漏的内存非常具体 - 这是分配的内存,您不再在代码中引用它。

应用程序可以使用“太多”内存(因为它会接收内存警告并被操作系统关闭)而不会泄漏单个字节。例如,大量的UIImage对象可以非常快速地占用内存,但没有一个被泄露。

被遗弃的内存将属于这一类 - 如果你在内存中占用对象的空间,但从不访问它们,这就是废弃的内存。乐器的“从不”定义当然只要您运行乐器 - 您需要访问应用程序功能的所有区域。

现在我们已经清除了您希望能够找到其他文章和答案的遗弃/丰富的混淆,例如评论中的文章和this related, if not duplicate, question