循环引用导致内存泄漏
2015-03-28 11:40
260 查看
转自: http://jishublog.iteye.com/blog/1898686
循环引用
所有的引用计数系统,都存在循环应用的问题。例如下面的引用关系:
对象a创建并引用到了对象b.
对象b创建并引用到了对象c.
对象c创建并引用到了对象b.
这时候b和c的引用计数分别是2和1。当a不再使用b,调用release释放对b的所有权,因为c还引用了b,所以b的引用计数为1,b不会被释放。b不释放,c的引用计数就是1,c也不会被释放。从此,b和c永远留在内存中,引起了内存泄漏。
结论:不要让对象的子对象保留自己。
循环引用
所有的引用计数系统,都存在循环应用的问题。例如下面的引用关系:
对象a创建并引用到了对象b.
对象b创建并引用到了对象c.
对象c创建并引用到了对象b.
这时候b和c的引用计数分别是2和1。当a不再使用b,调用release释放对b的所有权,因为c还引用了b,所以b的引用计数为1,b不会被释放。b不释放,c的引用计数就是1,c也不会被释放。从此,b和c永远留在内存中,引起了内存泄漏。
结论:不要让对象的子对象保留自己。
相关文章推荐
- ios开发之使用block引发循环引用导致内存泄露
- 循环引用导致内存泄露 dealloc无法调用
- 浏览器内部循环引用导致的内存泄露
- IE内存泄漏补充:关于循环引用的详细解释
- [导入]IE内存泄漏补充:关于循环引用的详细解释
- 内存泄漏,循环引用
- NSTimer保留目标对象引起循环引用造成内存泄漏解决办法
- iPhone开发资料之内存管理 ,循环引用导致的内存问题
- 解除dom循环引用导致的内存泄露
- iOS 状态模式中循环引用导致Expected a type 错误
- 单例分享(内存减少与循环引用解决)
- 解决rxjava导致的内存泄漏
- block导致的循环引用
- 使用block的时候,导致的内存泄漏
- 内存--循环引用的处理
- iOS内存话题: 实例变量造成的循环引用
- EffectiveJava-6 内存泄漏-清楚过期对象的引用
- CCCallFuncN误用导致引用计数循环引用
- PHP对象递归引用造成内存泄漏
- 循环引用导致内存泄漏