1、代码取消强引用后,gc回收对象
public static void main(String[] args) {Object obj = new Object();WeakReference<Object> weakRef = new WeakReference<>(obj);System.out.println(weakRef.get());obj = null; System.gc(); System.out.println(weakRef.get());if (weakRef.get() == null) {System.out.println("对象已经被回收");} else {System.out.println("对象仍然存在");}}
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/321a1cae4e0f4ffab12e06c3e83f9e88.png)
2、不取消强引用,gc无法回收
public static void main(String[] args) {Object obj = new Object();WeakReference<Object> weakRef = new WeakReference<>(obj);System.out.println(weakRef.get());System.gc(); System.out.println(weakRef.get());if (weakRef.get() == null) {System.out.println("对象已经被回收");} else {System.out.println("对象仍然存在");}}
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/614b83d0a38d4266abb96df926ba209d.png)
3、总结,将对象设置为null可结束强引用,保证能够被回收。