java对象的引用reference分为有强引用,软引用,弱引用,虚引用这几种形式。
十多年的驻马店网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整驻马店建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“驻马店网站设计”,“驻马店网站推广”以来,每个客户项目都认真落实执行。
1、Soft Reference(软引用)
指到的对象,即使没有任何Direct Reference,也不会清除,一直到jvm内存不足且没有Direct Reference时候才会清除。
应用场景:常用来设计缓存,不但可以将对象缓存起来,也不会容易造成内存不足。
2、Weak Reference(弱引用)
GC一旦发现了弱引用关系进行就开始收集对象。
应用场景:想查看某些对象信息,又不想影响GC对其的收集工作。
与GC的交互:
1.将referent置为null引用;
2.将堆中的目标对象设置为“finalizable(可结束的)”;
3.先执行finalize(),释放内存,软引用添加到RefernceQueue中。
ReferenceQueue在 soft renference和 weak reference中可以为null,但虚应用中必须有!
3、PhantomReference(虚引用)
与GC的交互:
1.不将referent置为null引用;而是将堆中的目标对象设置为“finalizable(可结束的)”;
2.先软引用添加到RefernceQueue中。然后收集对象,释放内存
附注:ReferenceQueue在 soft renference和 weak reference中可以为null,但虚引用中必须有!
4、抽象类Reference分析
java.lang.ref包中有四个类,他们的关系是PhantomReference,WeakReference,SoftReference继承了抽象类Reference。Reference类中,有thread子类(ReferenceHandler),并在静态区域中开启,对pending字段进行实时的监控。
pending是由jvm来赋值的,当Reference内部的referent对象的可达状态改变时,jvm会将Reference对象放入pending链表。
一旦relevent= null,垃圾收集时会标记WeakReference的referent为不可达get()返回null,并且通过赋值给pending ,触发ReferenceHandler线程处理pending。
ReferenceHandler线程要做的是将pending对象enqueue,但默认我们所提供的queue,也就是从构造函数传入的是null,实际是使用了ReferenceQueue.NULL,Handler线程判断queue为ReferenceQueue.NULL则不进行操作,只有非ReferenceQueue.NULL 的queue才会将Reference进行enqueue。
希望通过以上内容的介绍,能够给你带来帮助。
当前名称:分析java对象的几种引用(reference)
文章路径:http://www.shufengxianlan.com/qtweb/news3/130403.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联