Java四种引用的使用场景(强软弱虚)

时间:2019-06-23 15:31:41   收藏:0   阅读:501

一、引用强度排序

强引用>软引用>弱引用>虚引用

 

二、强引用:正常创建的对象,只要引用存在,永远不会被GC回收,即使OOM

Object obj = new Object();

 

三、软引用,内存溢出之前进行回收,GC时如果内存足够,就不回收。使用场景:在内存足够的情况下进行缓存,提升速度

Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;
sf.get();//有时候会返回null

 

四、弱引用:每次GC时回收,无论内存是否足够。使用场景:1. ThreadLocalMap防止内存泄漏  2. 监控对象是否将要被回收

Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null;
wf.get();//有时候会返回null
wf.isEnQueued();//返回是否被垃圾回收器标记为即将回收的垃圾

 

五、虚引用,每次垃圾回收时都会被回收,主要用于监测对象是否已经从内存中删除

Object obj = new Object();
PhantomReference<Object> pf = new PhantomReference<Object>(obj);
obj=null;
pf.get();//永远返回null
pf.isEnQueued();//返回是否从内存中已经删除

 

 

参考:

https://www.cnblogs.com/yw-ah/p/5830458.html

 

原文:https://www.cnblogs.com/june0816/p/10029286.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!