软引用示例演示与引用队列的作用分析

继续延着上一次https://www.cnblogs.com/webor2006/p/12105080.html的Reference的官方文档进行阅读:

下面来看一下discovered这个字段的定义:

ReferenceQueue:

下面来大致瞅下它:

软引用示例演示:

以上对于Reference类有了一个大概的认识之后,接下来则用一个软引用的具体实例来用下它,不过在正式写代码之前先来对Reference类中的get()方法:

好,接下来则用一下Reference,很显然它是一个抽象类,使用时得要用具体类,这里以SoftReference的这个具体类为例,也是平常比较熟的一个类,调用如下:

但是在get()时有可能为null,所以以上的代码是不太完善的,更好的写法应该是这样的:

另外Reference它还提供有一个clear()方法,瞅一眼:

所以咱们使用一下:

以上的使用特点基本上只要了解过它的人都知道,那为啥是这样呢?所以接下来对该类的官方文档进行说明一下:

好,下面再来看下例子,对于软引用还有一个软引用队列的构造方法,如下:

咱们来使用一下:

那。。这个ReferenceQueue有啥用呢?其实它的设计目的是在于让我们能够知道或者识别出垃圾收集器所执行的动作

WeakReference:

在上面对于软引用的javadoc进行了全面解读之后,下面再看一下弱引用的javadoc:

PhantomReference:

最后就是虚引用了,也来读一下javadoc:

文档上说得有点难以理解,所谓虚引用其实可以理解为没有引用,强度最小的引用类型,并不能通过虚引用来确保它存活与否,使用虚引用最大的目的就是当虚引用里面的对象被GC所回收时我们能收到这个通知。

posted on 2019-12-27 23:41  cexo  阅读(1272)  评论(0编辑  收藏  举报

导航