温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
那么咱们讲完这个呃,这first圾回收器呢,具体的回收细节之后啊,咱们关于这个这first垃圾回收器啊,基本上也就接近尾声了,实际上里边呢,有一些具体的细节上的,包括呢,我们前面提到这个remember set是吧,它里边这个具体的细节的一些内容,包括这个卡表等等,我们就不展开再给大家去说了啊大家如果有兴趣的话呢,可以诶专门呢在网上啊,你可以看一下相关的一些这个论文啊,然后呢,看一下这个这first垃圾回收器的这些细节的问题啊,大家一般情况下呢,我觉得大家能够啊这个了解到我这里边课件中,呃标识的这些过程细节的话呢,已经是足够了啊,没有必要呢再去往里边去深究,除非呢,你这块呢,考虑对这个这first垃圾回收器呢,再进行优化啊,那就是属于专业人士来做的这个事情了,那肯定当前这个知识呢是不够的,OK啊行,然后最后的话呢,我们这块呢,有一个补充,包括呢,还有一个这个优化的一个建议啊,我们来看一下这个二维官方呢,透出来这个信息啊,说到说这个回收阶段啊,实际上呢,也有考虑想设计成呢。
01:00
跟用户呢,程序一起并发执行,那这样的话呢,我们就可以又低延迟了,对吧,那当然这件事情呢,呃,做起来呢,会比较复杂一些。考虑到了我们这个这份呢,它的回收呢,它只是回收一部分的这个region,所以呢,我们这个暂停时间呢,目前来看也是可控的,就没有必要呢,非得是做成这个叫并发的了。啊,没有必要非正作战的一个并发了,那么如果说我们要这样去考虑的话呢,说可以把这个特性啊放到我们这first后续出现的一个,哎,主打低延迟的一个垃圾收集器,叫做ZJC当中,所以这个ZJC当中我们就会看到呢,我们在垃圾回收的时候呢,可以跟用户的这个线程一起并发的执行,而且呢,我们从这个j for当中其实也能看到,那目前呢,比较主流的一个趋势呢,就是说我们基于这种region是吧,这种分区的这种算法呢,是一个主流,在原有的我们这种分代的这个基础之上,新生代老年代整块的这个空这个区域呢,进行一个垃圾回收,它显然不是我们说最优的一个考虑,因为这样的话呢,会导致我们这个呃,低延迟的这个情况呢,难以保证对吧?哎,这个大家都应该能清楚这个事情,好这个呢,就是我们相当于又引出来了一个叫做ZJC啊,这个ZJC的它的主要特点大家应该也能清楚啊好那么关于我们这个g first垃圾回收器呢,最后我们有一个优化上的一个建议。
02:16
呃,优化这样的一个建议,这个年轻带呢,我们说这个它发生这个GC的频率呢,是非常高的,所以这块呢,避免呢,我们使用这个呃杠XMN,包括那个new ratio是吧,这样的这个参数呢,咱们去设置相关的这个年轻带的一个大小,诶建议不要这样做,因为呢,你固定年轻带的一个大小呢,就会覆盖我们的暂停时间的一个目标,注意是覆盖这个目标什么意思啊,大家想想我们这个年轻代这个样JC它实际上是独占式的,对吧?那如果你这块设置的这个这个新生代这个空间不合理的话呢,呃,导致我们这个暂停时间的目标啊,就不能够去达到了,所以诶让GM呢,它自己呢动态的去调整。能听明白是吧,诶能听明白这个意思啊好,这呢是我们说的这个叫的,哎,这个设置这个新生代参数这个事儿,哎主要是因为新生代这块呢,它这个是独占式的啊,会影响我们这个暂停时间。
03:07
然后下边呢,就提到这个暂停时间这个目标啊,大家设置的时候也不要过于严苛,因为暂停时间呢,过于严苛,咱们知道呢,跟这个吞吐量啊,他们两个两个呢,是不是此消彼长这样的一个这个这个关系是吧,你要是暂停时间呢,设置的啊,足够严苛的话呢,是不是一定会承受我们更高频的一个垃圾收集,进而的话呢,我们这个垃圾回收的这个开销呢,会变大,进而呢,影响到我们这个吞吐量啊,这个大家一定要小心一点。啊,这个我们这个吞吐量的目标呢,呃,这first的话呢,它目标是90%的应用时间,10%的垃圾回收的时间,呃,就是如果呢,你要这个停留时间过短,那一定会影响到我们这个吞吐量,OK,这最后呢,相当于是这样的几个建议啊,诶大家呢,稍微关注一下,在实际生产环境当中,根据具体的你这个场景,我们去做相关的一些设置,但是呢,有一些这个红线呢,大家是要避开的。OK,这呢,我们就给了一个参考上这个实际开发中的一个建议,那至此的话呢,我们关于这个这first垃圾回收器呢,咱们就介绍到这儿啊,就介绍到这儿。
我来说两句