Java弱引用(WeakReference)的一点认识
首先我们看下弱引用的定义
"弱引用"顾名思义,就是形同虚设,与其他几种引用都不同,弱引用并不会决定对象的生命周期。如果一个对象仅持有弱引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。
这个仅字很关键,说明弱引用的目的是为了当对象引用为null时,能及时的被垃圾回收器回收。代码示例如下:
String value = new String("abc");
WeakReference<String> abc = new WeakReference<>(value);
System.out.println(value);
// 当对象的引用为null时,垃圾回收器工作的时候就会将堆内存中开辟的空间回收
value = null;
System.gc();
TimeUnit.SECONDS.sleep(5L);
System.out.println(abc.get() == null);