SoftReference的用法
来源:互联网 发布:javascript xml 编辑:程序博客网 时间:2024/05/02 02:00
SoftReference的语义就是当内存不够用的时候,GC会回收SoftReference所引用的对象。所以,在memory sensitive的程序中将某些大型数据设置成SoftReference再合适不过了。
创建一个SoftReference:
- Object obj = new Object();
- SoftReference softRef = new SoftReference(obj);
- obj = null;
最后那句“obj = null”很重要。如果不将obj设置成null,那么new出来的Object就会有一个"strong reference",如果这样,softRef就不能发挥作用了。
使用SoftReferene:
- Object obj2;
- obj2 = sr.get();
- if (obj2 == null) // GC freed this
- sr = new SoftReference(obj2 = new Object());
因为是SoftReference,所以有可能已经被GC回收了,所以需要判断sr.get()的返回值是否为null。如果是的话,就再重新new一个Object。这里的最后一行代码也很有讲究,比如,也许会这么写:
- Object obj2;
- obj2 = sr.get();
- if (obj2 == null) {
- sr = new SoftReference(new Object());
- obj2 = sr.get();
- }
这样的问题就在于GC可能发生在"sr = new SoftReference(new Object());"和"obj2 = sr.get()"之间,那么obj2仍然有可能为null。
- SoftReference的用法
- SoftReference, WeakReference 以及 PhantomReference 的特性及用法
- SoftReference的使用
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- flexlib编译
- 玩具总动员3中英文对白
- 如何使用android模拟器截图
- Unrecognized configuration section system.web.extensions
- Java线程(一):线程安全与不安全
- SoftReference的用法
- android - 自定义标题栏(在标题栏中增加按钮和文本居中)
- 【android基础】之android Toast大全
- 纯无聊贴(庆祝清明)
- VS2010为Picture Control 手动添加变量
- Understanding Android ContentProvider
- JSP自定义标签(一) 树形下拉选择菜单
- Android - ImageButton单击切换按钮图片效果的实现
- 未来物联网时期安防企业如何失掉话语权