今天在看HikariCP源码ConcurrentBag类时,发现它里面使用了WeakReference,第一次看到这个,之前从来没用过,于是查资料去了解下。
引用类型
Java中一共有4中引用,分别为强引用(Strong Reference)、软引用(Soft Reference、弱引用(Weak Reference)、虚引用(Phantom Reference),强度依次递减。
强引用
java的默认实现,类似Object obj=new Object()
,它会尽可能长时间存在于JVM,当没有任何对象指向它的时候才会被GC回收1
2
3
4
5
6
7
8
9
10
11
public void strongRefTest(){
Object obj=new Object();
Object strongRef=obj;
obj=null;
System.gc();
/***
* GC后不会被回收
*/
assertNotNull(strongRef);
}