2013-08-22 22 views
0

请告诉我为什么废弃的内存不被视为泄漏内存?为什么被遗弃的内存不被视为ios中的泄漏内存

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

根据仪器,

泄漏的内存是:不再能达到分配的内存。

废弃内存:无残障分配的内存是永远不会使用(浪费或遗忘的记忆)

例如:popOverController被驳回后,该的viewController所有的变量是越来越释放,也有根据仪器没有泄漏。

但是,当通过Mark Heap检查时,它告诉我一些内存正在浪费。

上午发布所有变量。 一旦dealloc视图被调用,它会释放所有对应的对象,对吧? 如果它无法释放,那么它会处于泄漏状态。

Plz帮助我,如何捕捉这废弃的内存?这背后的主要原因是什么(开发中最常见的错误)?

感谢

回答

1

泄漏的内存是非常特殊 - 这是分配的内存,你不再有你的代码的参考。

应用程序可以使用“太多”的内存(因为它会接收内存警告并被操作系统关闭)而不会泄漏单个字节。例如,大量的UIImage对象可以很快占用内存,但是没有一个会泄漏。被遗弃的内存将属于这一类 - 如果你用内存占用内存空间,但从不访问它们,这就是被遗弃的内存。仪器对“永不”的定义当然只有在您运行仪器时才需要 - 您需要访问应用程序功能的所有区域。

现在,我们已经清理了被遗弃的/丰富的混乱,你会希望能够找到其他的文章和答案,如评论文章和this related, if not duplicate, question

+0

嗨jruton, 原谅我的英语不好。在编辑我的问题。请告诉我,如果你想我添加任何东西到我的问题。 –

+0

我现在明白了 - 我认为你已经把“废弃”这个词与“丰富”这个词混淆起来了 - 这对于非英语的人来说很容易犯错!有一个很好的指导,可以在乐器中使用堆镜头[here](http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-分析寻找不良记忆增长/),这可能有所帮助。 – jrturton