00:00
好,各位同学,咱们继续,那么我们介绍了强软弱引用以后,那么接下来我们需要介绍一下我们最后一种引用。需引用。那么什么叫虚引用呢?又称为幽灵引用,那么我们先简单的来看一下它的概念,然后我们再来看用代码来给大家进行解析。首先我们来看一下。虚引用需要引用还是这个包下面的phantom reference,再一个呢,是幽灵鬼虚拟的意思。顾名思义,虚引用就是形同虚设。与其他几种引用都不同,需引用并不会决定对象的生命周期,也就是说,如果一个对象呢,它是持有这个虚引用的,那么它就和没有任何引用一样,哎,那见了鬼了。那拿来有什么用呢?他在任何时候都可能被垃圾回收剂回收,那么前面我们讲过上一档是不是强软弱需是未可弱饮用,弱饮用也是,只要一被GC就会被干掉,那么它不能单独使用,也不能通过。
01:11
访问对象。必须和一个东西叫reference引用队列来联合使用,那么稍微它的限制,它的使用上限制条件又加了一个,要跟一个东西叫引用队列。那么言下之意,它有什么用呢?它的主要作用是跟踪对象被回收的状态。仅仅提供一种确保被finalize方法。那么。做某些事情的机制,言下之意哈,虚引用由于是形同虚设,你用它的get方法,那同学们还记不记得我们以前在讲week的时候,若引用的时候这不有软soft week都会有一个get方法得到这个对象,但是抱歉,对于我们的phantom。虚引用的话,它总是返回呢,就是这个方法有。第二每次都是那。因此无法访问对应的对象。引用。
02:01
它的意义仅用于监控对象的回收状态。那么假设一个对象已经进入了finalize,那么。我们可以来做GC回收的时候,来呢,给他呢做一个进一步的处理和通知,那么换句话说啊。设置虚拟引用关联的唯一目的就是这个对象被真真真正回收的时候收到一个系统通知,或者是后续添加进一步的处理。言下之意就是对于虚引用的对象,你怎么get?他都不能获得。只要是他要被回收了,他会先放到一个引用队列里面,有点类似于这个人犯罪了,他肯定要被执行死刑,但是现在一枪崩了。他之前先。死缓判了一个死刑,缓慢两年以后再执行,再给你多活一段时间,那么在这段时间里面,你可以做一些通知和添加一些后续处理。那么JA Java技术里面,我们在Java烂object方法里面有一个final line这么一个方法,那么言下之意就是允许在GC之前,将对象从内存中清除出去之前做一些必要的清理工作,那么这种必要的清理工作就是有点类似于spring里面A的后置通知啊,你真真真正要载我之前,要收我之前,我呢在做点什么通知啊什么之类的,来保证你对象的什么一种监控工作的完整和提升。
03:25
好,那么这个时候我们得到两个内容,第一个叫虚引用,它的作用呢,电的方法总是反馈呢,它呢,第二个它要跟引用队列。干嘛呢,联合使用,那么前面为什么没讲呢?前面呢,它都可以呢,跟引用队列,但是呢,它没有限制,只有到虚引用,这你必须要和引用队列一块使用,那么好,首先同学们,我们先来看一下整体架构,我们在看到object。引用,当然我们说过了,一般我们工作中95%都是用强饮用,那么呢,在高速缓存站用软引用和弱引用,但是虚引用呢,它也有。
04:05
主要是来做这个对象回收的监控。在finalize方法的时候。就像是spring的后置通知,就像是一个人被判死缓了,那么之前死刑之前他能做点什么?那么大家看reference queen这是不是有个引用队列呀?那么好,我们来看一下,什么意思呢?就说白了123这三个。GC之后都可以被放到是吧?引用队列,当然最重要的是这个虚拟引用,它呢要被弄到这儿。我们呢?来看一眼引用队列。那么首先引用队列reference queen啊,巴拉巴拉巴拉这段翻译过来也就说什么我在被回收之前要被引用队列保存一下,那么也就是说对于这些都需要可以什么GC之后放到引用队列,它还没有真真正正到最后的那一步。好,那么这个时候呢,同学们呢,我们呢,不妨呢来看一眼。
05:03
这个是不是我们上一讲的这个。弱引用,我们都知道O1O2好,那么同学们,我们一直行干嘛呢?之前有两个对象OBJECT1,那么软若引用week,它呢?引用了这个object之后,Object烂了以后,我们再来看,OE是烂,只要有GC弱引用都会被回收,没问题吧?好,这是上一讲的,那么现在我们要讲一些什么?
我来说两句