Cache专用: SoftReference
来源:互联网 发布:农业财经新闻数据 编辑:程序博客网 时间:2024/06/05 15:48
没有想到有一天真的会用到SoftReference,学的时候完全不知道这东西能干吗。
今天它确实派上用场了,没错,我也是用它来做cache。
SoftReference的语义就是当内存不够用的时候,GC会回收SoftReference所引用的对象。所以,在memory sensitive的程序中将某些大型数据设置成SoftReference再合适不过了。
创建一个SoftReference:
最后那句“obj = null”很重要。如果不将obj设置成null,那么new出来的Object就会有一个"strong reference",如果这样,softRef就不能发挥作用了。
使用SoftReferene:
因为是SoftReference,所以有可能已经被GC回收了,所以需要判断sr.get()的返回值是否为null。如果是的话,就再重新new一个Object。这里的最后一行代码也很有讲究,比如,也许会这么写:
这样的问题就在于GC可能发生在"sr = new SoftReference(new Object());"和"obj2 = sr.get()"之间,那么obj2仍然有可能为null。
Reference:
http://www2.sys-con.com/itsg/virtualcd/java/archives/0507/shields/index.html
- Cache专用: SoftReference
- 使用SoftReference制造自己的Cache
- 医疗专用数据库Cache对接
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- struts2 Action 名称的搜索顺序
- Magento Featured Category推荐分类模块安装
- VBOOT
- getchar()和EOF总结
- 四年之痒——工作墙
- Cache专用: SoftReference
- 工作方向
- 面试70问 经典回答
- 用Delphi的InterBase数据库开发C&S应用程序
- Local Cache的小TIP
- 关于张老师Java视频学习(二)
- ARM MMU工作原理剖析
- 项目计划目标
- 【茶文化】喝茶是最有效的沟通方式