android智能指针 sp wp归纳总结
2011-09-27 16:05
477 查看
参考牛人的源码分析文章/article/1363539.html 和《深入理解Android》
其中要点:
1、智能指针引用计数框架原理:当父对象要引用子对象时,就对子对象使用强引用计数技术,而当子对象要引用父对象时,就对父对象使用弱引用计数技术,而当垃圾收集系统执行对象回收工作时,只要发现对象的强引用计数为0,而不管它的弱引用计数是否为0,都可以回收这个对象,但是,如果我们只对一个对象持有弱引用计数,当我们要使用这个对象时,就不直接使用了,必须要把这个弱引用升级成为强引用时,才能使用这个对象,在转换的过程中,如果对象已经不存在,那么转换就失败了,这时候就说明这个对象已经被销毁了,不能再使用了。
2、智能指针实现框架:由一个对象来提供引用计数器,但是这个对象不会去维护这个引用计数器的值,而是由智能指针来维护;具体说是,第一是要定义一个负责提供引用计数器的公共类,第二是实现相应的智能指针对象类;
3、android源码涉及RefBase,sp,wp
(1)强引用与弱引用计数
RefBase中有一个隐含的对象,该对象内部有强弱引用计数。
sp化后,强弱引用计数各增加1,sp析构后,强弱引用计数各减1
wp化后,弱引用计数加1,wp析构后,弱引用计数减1
强引用为0,导致实际对象被delete
弱引用为0,将导致隐含对象被delete
(2)弱引用操作
弱指针的最大特点是它不能直接操作目标对象,在于弱指针类没有重载*和->操作符号,而强指针重载了这两个操作符号。但是,如果我们要操作目标对象,需要把弱指针升级为强指针。
(3)目标对象生命周期控制
目标对象生命周期控制除强弱引用计数外,还有flag标志
A. 如果对象的标志位被设置为0,那么只要发现对象的强引用计数值为0,那就会自动delete掉这个对象;
B. 如果对象的标志位被设置为OBJECT_LIFETIME_WEAK,那么只有当对象的强引用计数和弱引用计数都为0的时候,才会自动delete掉这个对象;
C. 如果对象的标志位被设置为OBJECT_LIFETIME_FOREVER,那么对象就永远不会自动被delete掉,谁new出来的对象谁来delete掉。
其中要点:
1、智能指针引用计数框架原理:当父对象要引用子对象时,就对子对象使用强引用计数技术,而当子对象要引用父对象时,就对父对象使用弱引用计数技术,而当垃圾收集系统执行对象回收工作时,只要发现对象的强引用计数为0,而不管它的弱引用计数是否为0,都可以回收这个对象,但是,如果我们只对一个对象持有弱引用计数,当我们要使用这个对象时,就不直接使用了,必须要把这个弱引用升级成为强引用时,才能使用这个对象,在转换的过程中,如果对象已经不存在,那么转换就失败了,这时候就说明这个对象已经被销毁了,不能再使用了。
2、智能指针实现框架:由一个对象来提供引用计数器,但是这个对象不会去维护这个引用计数器的值,而是由智能指针来维护;具体说是,第一是要定义一个负责提供引用计数器的公共类,第二是实现相应的智能指针对象类;
3、android源码涉及RefBase,sp,wp
(1)强引用与弱引用计数
RefBase中有一个隐含的对象,该对象内部有强弱引用计数。
sp化后,强弱引用计数各增加1,sp析构后,强弱引用计数各减1
wp化后,弱引用计数加1,wp析构后,弱引用计数减1
强引用为0,导致实际对象被delete
弱引用为0,将导致隐含对象被delete
(2)弱引用操作
弱指针的最大特点是它不能直接操作目标对象,在于弱指针类没有重载*和->操作符号,而强指针重载了这两个操作符号。但是,如果我们要操作目标对象,需要把弱指针升级为强指针。
(3)目标对象生命周期控制
目标对象生命周期控制除强弱引用计数外,还有flag标志
A. 如果对象的标志位被设置为0,那么只要发现对象的强引用计数值为0,那就会自动delete掉这个对象;
B. 如果对象的标志位被设置为OBJECT_LIFETIME_WEAK,那么只有当对象的强引用计数和弱引用计数都为0的时候,才会自动delete掉这个对象;
C. 如果对象的标志位被设置为OBJECT_LIFETIME_FOREVER,那么对象就永远不会自动被delete掉,谁new出来的对象谁来delete掉。
相关文章推荐
- Android智能指针分析(sp、wp)
- Android的“垃圾回收机制”---智能指针(android refbase类(sp wp))
- Android的“垃圾回收机制”---智能指针(android refbase类(sp wp))
- Android中的智能指针:sp和wp
- Android智能指针分析(sp、wp)
- Android智能指针 (sp & wp)
- android 的 sp 智能指针用法介绍 sp<> wp<>
- Android framwork 分析之智能指针LightRefBase ,sp,wp,RefBase
- [Android]智能指针用法(SP强指针WP弱指针)
- Android智能指针 (sp & wp)
- sp<> wp<>-Android中定义了两种智能指针强指针sp和弱指针wp
- Android智能指针 (sp & wp)
- 【C++】Android (Light)RefBase-sp-wp引用计数-智能指针源码分析
- Android系统的计数基类LightRefBase、RefBase与智能指针sp、wp
- sp<> wp<>-Android中定义了两种智能指针强指针sp和弱指针wp
- Android智能指针分析(sp、wp)
- Android中的sp和wp指针
- 智能指针(SP,WP)的使用条件
- Android 智能指针详解 -- wp
- Android sp和wp指针