本文是自己学习的一个总结,主要学习资料来自Java文档和以下链接。 https://brightloong.github.io/2018/05/27/关于Java中的WeakReference/#more
@[TOC]( )这个类其实是对应着JVM中的弱引用的概念。与此类似的还有强引用,虚引用,软引用。
弱引用的特征是,一旦弱引用被GC注意到,那弱引用的引用对象就会被回收。但是弱引用本身不会被回收。
一开始是为了弄懂ThreadLocal才来学习WeakReference,还好WeakReference中的方法比较少,很容易弄懂。
WeakReference本身继承Reference,其中没有太多花里胡哨的方法,基本都是指定引用对象,取出引用对象等。
WeakReference只有两个构造方法,如下所示。
/** * 传入引用对象 */ public WeakReference(T referent) { super(referent); } /** * 传入引用对象,并且传入一个队列。 * 当引用的引用对象referent被回收后,引用仍然存在。q会将引用入队。 */ public WeakReference(T referent, ReferenceQueue<? super T> q) { super(referent, q); }相比较与第一个构造器,第二个构造器还可以多加一个队列,用来记录引用对象已被回收的引用。
实验程序可以看文章开头的链接。