00:00
那接着来我们来看第七个新特性,叫可中断的G1MIX的GC啊,这呢相当于也是关于GC方面的一个新特性啊,叫可中断的啊,那什么叫可中断的呢?检验之就是当我们啊叫G1啊,G1呢就是念着方便了啊,其实呢叫该壁纸collection first,就是垃圾收集优先啊这样的一个回收器,当这些回收器呢,回收的这个垃圾,呃是所花费的时间超过呢咱们暂停时间的目标的时候呢,我们是可以去终止垃圾回收的过程的。啊,这个之前呢,我们是做不到这一点的哈,那现在的话呢,我们说就可以去及时的做一个终止啊,那首先呢,我们提一下这个啊,这个g first啊垃圾收集器,它呢是用于具有大量内存的多处理器机器的。啊,在性能提升以后,它呢,是由于我们这个前面给大家也介绍过啊,叫CMS的CMS呢,也是一个低延迟的垃圾收集器啊,我们在讲这个。6.2新特性的时候呢,也给大家也提过这个事情,那么我们当前这个新特性的设计目标呢,就是什么呢?满足用户设置的预期的GM的停顿时间啊,GM停顿时间我们设置完以后,那么我们在垃圾回收的过程当中,一旦呢,超出了啊预定的暂停时间这个时候呢,我们是可以终止的。
01:14
啊,那么当前是什么情况呢?我们这里边来提一下啊,这个G呢,垃圾收集器,我们在收集垃圾的过程当中,首先呢,根据相关的算法呢,我们需要确定要回收的啊垃圾的集合,诶,我们称它呢叫collection set。啊,叫垃圾的一个回收集,那我们确定垃圾回收集以后呢,接下来我们就可以进行一个垃圾的一个回收整理工作就开始了,但是这个过程呢,我们称作叫without stopping,就是说呢,是不可终止的。啊,是不可终止,就是一直呢,得执行到我们垃圾收集及当中的这个所有的垃圾被清理掉以后,我们才会去stop。那这里边就存在一个问题啊,那一旦呢,我们这个回收集比较大的时候啊,那很有可能我们stop stop the word这个时间呢,就超出了咱们预定的这个停顿时间啊,这呢就出现了我们说的这个问题了啊,那怎么办呢?啊,这时候我们就需要考虑这个做一个终止,那又由于呢,你的垃圾回收器啊,垃圾回收这个集就是比较大。
02:11
那我们终止了以后是不是不太合适呢?诶,所以这里边儿我们就需要将咱们的垃圾回收集做一个区分。啊,这个其实跟我们生活中也是类似的啊,大家呢,比如说现在要做啊,今天一天啊要做五个事情,但是呢,你的这个时间呢,是不允许的,只能做其中的一部分,那怎么办呢?呃,这个呢,国外这个大师呢,就是提到过这样的一个管理的一个思路啊,这个大家其实也都听说过了啊,在这我们去描述一下,比如说呢,他主张把我们平时所做的这个事儿啊,大家做一个划分啊,一条主线呢,是按照我们的这个叫所谓的紧急度来划分啊,一个呢,主线是按照我们这个重要程度来进行划分,那么第一象限呢,就是重要且紧急的。那么这呢就属于重要不紧急的,这呢就属于不重要不紧急的,这呢就属于紧急不重要的事情,那划分完以后呢,你看你具体的这个事情,那分别呢,应该放在哪几个区间当中。
03:05
啊,那么放完以后呢,这是我们由于时间的这个有限性,诶我们就优先呢,需要去处理啊,大家觉得优先处理什么事情呢。哎,那当然呢,应该是处理叫重要紧急的事情了,对吧?哎,处理这个重要紧急的事情,这个完了以后呢,我们再去处理,当然也有些事情属于紧急,这个不重要的啊,这个我们从短期来看呢,紧急的事儿呢,肯定是要优先处理的,但是如果放到一个长期角度来看呢,呃,生活当中大家应该更多的去关注重要不紧急的事情,呃,因为重要不紧急的事情呢,你处理完以后,他就不会碰到这个第一象限了。一旦呢,你要没及时的去处理重要不紧急的,他随时呢,就可以变化成一个重要紧急的事情啊,所以呢,出于叫什么防患于未然啊,大家呢,平时来讲啊,你要把这个事情呢,放在这个象限当中啊,那如果说对于当前的事情来讲,那优先呢是重要且解析的,那如果时间有限的话呢,像这种事情呢,我们就可以考虑先不进行处理了。
04:00
这是我们生活当中的一个处理的模式,那么回到我们垃圾回收这块来说的话呢,就是我们把这个垃圾回收集呢做一个划分。哎,我们划分成两部分,第一部分呢,称为叫必须或者是强制回收的部分。就是一定要回收的垃圾,呃另外一部分呢,我们称为叫呃optional,就是可选的部分,就是可以回收,也可以不回收,如果要是这个,嗯,你处理完这个必须的部分以后,还剩余时间了,那么就是跟我们这个停顿时间相比哈,还剩时间了,那么你就可以去处理我们叫可选的部分,那如果时间已经不足了,那这时候的可选部分呢,就可以不去处理了,哎,就是这样个情况。啊,这我们写的也比较清楚啊,那什么样的这个呃,垃圾回收集属于这个必须要处理的呢?啊这里边提到了必须处理的部分呢,包括这些垃圾收集及不能递增处理的这些回收集的部分,比如说呢,这个年轻袋啊,它是一个站的一个结构啊,同时呢,也可以包含我们的老年袋啊,这样呢,来提高我们垃圾回收的一个效率,那如果不及时的去处理的话呢,我们会出现相关的一些内存溢出的问题。
05:08
啊,这呢属于必须的部分,那么对于这个可选的部分呢,我们先来看这个第三个点哈。对于可选的部分,我们这里写了说,如果在处理完必须的部分之后还有时间的话,那我们就来处理这个可选的部分。啊,属于这样的情况,那如果说呢,你处理完这个必须的部分以后呢,这个时间的花费已经接近于预期的暂停时间了,怎么办呢?那这是我们这个这些垃圾收集呢,是可以终止可选部分的一个回收的,哎,达到满足预期的停顿时间的一个目标。啊,是这样情况,那如果说呢,你还剩下时间了,这时候呢,你可以去收集我们的可选部分,那这时候可选部分的话呢,呃,其实如果时间也是比较有限,我们只能够处理可选部分的一个子集了。哎,属于这样的情况啊,就是我们相当于是尽可能的让我们垃圾处理的时间一定要满足在我们停顿时间之内。啊是这样一个情况,那么一旦呢,我们既处理了必须部分,又处理的这种可选部分,这就相当于是一个混合回收了,那么这个混合回收呢,它的这个内存的消耗呢,比我们平时的这种回收呢,是要高一些的。
06:12
啊,因为呢,我们需要为这个可选的这些呢,回收的部分呢,进行一些数据的维护,会产生轻微的CPU的开销,但通常呢,会小于1%啊,其实呢,我们也是可以接受的啊,哎,这就相当于是任何事物都有利有弊。那我们呢,希望呢,满足咱们说停顿时间的要求,这呢就会有相关的一些内存和CPU的一些额外的开销啊,这个呢,目前来看我们还是可以接受的啊,这呢就是相当于我们提的这个,呃,第七个新特性叫可冲断的GC的mix GC。啊,这个呢,大家也是清楚就行,这呢是我们的第七个新特性啊。
我来说两句