00:00
好,同学们,我们继续,那么上一讲给大家介绍了虚引用和引用队列,我们就了解了两个小细节,第一个虚引用你怎么get?这哈,形同虚设,顾名思义,那么也就是说,如果一个对象仅持有虚引用,那么干嘛?就跟没有任何引用一样,换句话说就是什么它的get方法总是返回那。第二个问题呢,就是说虚引用它只要有被GC了,那么相当于持有虚引用的这样对象会被放到一个东东叫什么引用队列里面,那么他这个时候在队列真正被干掉之前,那么他可以做点事儿,这就是一种什么去引用的通知机制啊。好,那么接下来我们呢,来看一下我们的什么phantom。这个吸引用,那么呢,老规矩。和刚才的一样。我也就。偷个懒直接拷贝,那么。这个时候呢,PH这这一块引用,那么来同学们。Object,那么这个时候干嘛呢?注意老规矩,它呢也有两个构造方法,第一个你看这块是什么对象,我引用哪一个O键,然后呢是这个引用对列,言下之线,我现在是干嘛,说穿了虚引用就是。
01:20
套着一个这个真实的对象,我要监控这个对象的什么回收信息,也就是说我们现在干嘛呢,在GC之前。他没有放在这个队列,GC之后它会放在这个队列,那么放在这个队列就有点类似于spring a OPP的后置通知啊,最终被干掉之前,你还有什么遗言,你还要在死之前还想做点什么事?可以有一个后置通知这么一种小情况。好,那么来同学们那么老规矩,那么这块。干嘛呢,我们的OE。好,然后呢,这个时候呢,我们的引用队列。那么不妨我们队列放在最后吧哈,那么这个时候就是虚引用点get好,那么这个时候就是我们的引用队列点。
02:07
或那么这个时候什么概念,同学们?上面是定义,下面是GC之前,好,那么来同学们,我们来看一下,我们现在呢,GC之前会有一些什么东东呢?来,我们搂一眼。怎么着?O不用讲你了,一个肯定有对吧,现在没有发生GC引用的队列里面的对象就是个,那如果说这个是虚引用,那么呢,现在干嘛呢?我们讲过虚引用是get干嘛?请看这句话我们一再说过。虚拟用get方法总是那形同虚设,那么呢,它有这个方法,但是你每次去调用干嘛,都是什么我们的。钠,第二个引用队列里面是个捺,好,那么老规矩,那么省点事,这个呢,我呢也就不再想写了。
03:05
过来这。我们呢,直接抛出异常,然后呢和刚才的效果是一样的,那么完成以后,我们来看看GC之后它会有什么样的表现,那么大家请看啊,现在非常的明显了,吸引用的get在GC之前。Get了以后就是个,那这么说能跟上好同学们,我们来执行一下。看一眼,看一眼,效果来了。上面三个O1好说下面干嘛,Get是那需引用那但是1GC之后O1肯定是那合适,但是大家看这个还是那第二个get,那么也就是说这个get这个get。都是,那但是注意,只要产生了GC,对于我们的虚引用跟刚才一样,就跟我们的弱引用一样,它又被放到了这个引用队列里面,那么在这个引用队列里面干嘛?它又可以执行自己一些后续的动作,这样就可以说是什么有点类似于我们a op的后置通知那么好,全部的内容给大家整理好,笔记要求同学们简单的先阅读半分钟,然后我们待会儿咱们再说。
04:20
好,那同学们,我们带着大家看一下这小段小笔记,那么四种引用类型我们讲过了,主要是后三种,那么第一种默认的前引用,那么它用不用队列都无所谓。那么这个事呢,干嘛呢?就是你没有这个也能工作,但是呢,虚引用一般是要跟这个引用队列合一块哈,前三者OK,第四种。最好呢,都是要放到这个引用队列。那么也就是说,我们在指定关联的队列的时候。干嘛会将这个引用加入到什么地方?引用队列就是死之前。你还可以在这个队列里面。如果程序,因为我们大家看到。他是不是在这个队列里面,你看确确实实打出来了吧。
05:00
那么言下之意,被加入到引用队列,那么可以引用队列内存被回收之前采取必要的一些行动,那么也就是说你在做点业务逻辑,比方说打出一句话,呃,我要被回收了。相当于就是一种什么通知机制,好,那么也就是我们在这儿笔记所说过的。就是这个对象被收集回收的时候,收到一个启动通知,或者后续添加进一步操作好,那么。有数据的时候,意味着引用指向的对内存的对象被回收了,通过这种方式,GM允许我们的对象被销毁之后,做一些我们自己想做的事,那么这个呢,就是我们的一个吸引用相关的介绍,但是呢,这个呢我也就不再往深度讲了,因为我们时间有限。呃,要讲后面更多的徐引用,我个人认为呢,达到这也差不多啊,从杨哥的工作时间角度而言吧,这个除了监控对象的这个回收情况,我认为99.99%,你在日常工作中。应该是用不到,说难听点,真的也就是为了应付面试好,那么呢,我们呢,不再浪费时间,徐引用先给大家介绍到这儿。
我来说两句