00:00
接着呀,咱们来谈下边这个垃圾回收器啊称为呢叫parallel呢,回收器这儿呢,如果用一句话呢来概括这个parallel呢,GC就叫做吞吐量优先,哎叫做吞吐量优先,好我们来看一下在这个houseor这个年轻袋当中,我们说除了运用这个panel收集器啊用于并行回收以外呢,我们又提到了另外一个并行回收的垃圾回收器,哎这呢叫做parallel呢scavenge,哎主要呢,我们有时候呢,就称为呢叫parallel啊垃圾回收器了,它呢也是一个并行的对吧?那么我们现在已经有了这个piel的话啊,怎么又整了一个叫parallel呢?诶首先说呢,这个piel跟parallel呢,他们都是回收这个新生代的,而且呢,你看他们使用的这个算法对吧?哎,Stop war这个机制,包括冰行回收,跟我们这个pan呢,其实是一样子的,包括它俩的这个性能上呢,实际上也是差别不是特别大啊,性能的差别也不是特别大,哎,你看下边也说了,说为什么要多此一举,再提供一个叫parallel对吧?哎,实际上我们通过这一句话呢,对他家进行介绍的话呢,也暴露出来的它的一个主要特点啊,我们说呢,这个parallel。
01:00
呢,跟我们这个panel呢,它的收集器是不一样的,哎,目标呢,诶我们是为了要达到一个叫可控制的叫吞吐量啊through put可控制的一个吞吐量。能理解吧,就是我们希望呢,这个程序呢,尽可能的是提升这个吞吐量的这样的一个场景,嗯,也可以称为呢,叫吞吐量优先的一个垃圾回收器,呃,就从这个角度来看的话呢,跟我们这个panel呢,是不太一致的,Panel呢,我们主要强的就是一个并发是吧,哎,一个并行这样一个特点,而且呢,他们本身使用的这个这些呢,垃圾回收相关的这个底层框架呢,实际上呢,也是不一样子的啊,这个parallel呢跟parallel old它俩呢,基本上就是自成一派。那这个咱们讲的过程当中,实际上呢,始终呢,是需要用这样一个图,方便呢,大家从整体上呢,对它进行一个理解对吧,那这样咱们把这个图呢,给它盯一下啊,听完以后呢,把它变得稍微小一点啊,咱就放在这个位置呢,时刻呢,咱们看起来也比较方便啊。好回过来就是刚才呢,我们相当于提到就是说这个parallel呢,跟这个parallel o它俩呢,诶底层使用的这个JC框架呢,是自成一派的,跟其他的也呢都不太一样,包括这个G1呢,也是自成一派啊就这样子的行,那么下一个呢,就提到叫自适应调节策略,也是呢,我们说PA亮呢,Stemven和panel的一个重要区别,就是说呢,什么叫做啊垃圾回收的自适应调节策略呢?那就是说我们这个在整个GVM呢,在运行过程当中,我们会根据呢,当前运行的一个情况啊,进行一个性能的监控啊,动态呢,咱们可以去调整内存中,比如说像内存的一个呃分配情况啊,然后呢,以适合呢,咱们达到最优的一个,比如说你是希望呢,吞吐量优先还是希望呢,说这个低延迟是吧,来达到这样的一个最优的一个策略。
02:40
那那么这里边儿呢,我们去动态的调整这个内存的一个分配情况呢,就称为我们叫垃圾回收,这个过程当中叫自适应调节策略。那一会儿呢,咱们也会涉及到相关的这个参数,诶看如何去开启和关闭,OK,一会儿咱们说这个事儿啊,现在呢,知道它呢,也是二者的一个区别。那很显然呢,是不是这种自动的要好一些啊,对吧,在我们这个人为呢,你不能保证自己是罪恶的情况下呢,我们可以呢,诶设置这个叫自适自适应是吧,一个调节系统行看下边啊说这个高吞吐量,高吞吐量则可以呢,高效率的去利用CPU时间,那尽快的完成程序的一个运营任务,那主要呢,适合在后台运算,而不需要呢太多的交互场景,凡是呢,我们提到这个高存储量的话呢,大家记住一个呃套路,就是说我们一定是适合这种后台运行的。
03:27
那不需要呢,有太多交互的,你像跟用户要交互的话呢,我们一定是希望呢,是不是叫这叫低延迟啊,就暂停时间一定要短一些,对吧,咱们在前面讲这个暂停时间,诶在前面讲这个暂停时间和这个诶吞吐量的时候呢,咱们特意强调过,怎么呢叫做吞吐量有限,怎么叫做暂停时间有限,对吧?哎,这个已经说过了啊,大家应该都是比较清楚的,行,那我们接着回过来去介绍。呃,那么适合这种后台运算不需要太多交互的场景都有哪些呢?比如说我们去执行这个叫批量处理,比如订单的处理,工资的支付,合约计算等等,这些呢,都可以理解成是我们这种后台运算不需要太多交互的场景。
04:07
那大家呢,如果面试的时候呢,你可以呢,就举这样的例子就OK啊就OK,那么这个拍贷的话呢,我们说这个收机器呢,在1.6的时候呢,它提供了一个哎,针对于老年代呢,进行垃圾回收的叫parallel o的收集器,用来去替换老年代的Siri o的这个收器,应该说这个啊意义非常大。这个意义非常大,但是你看啊,这个咱们如果说我换成一个红色的,如果说呢,我们在没有这个parallel old的情况下呢,我们如果新生代呢,你使用的叫并行的叫parallel coverage,咱们在这个老年代呢,你看是不是只能有这个叫S了。哎,就是在我们这个parallel order出来之前,你只能用这个S是吧,那用这个sro有什么问题啊,哎,大家你想啊,既然呢,咱们在这个,呃,新生代呢,用了这个parallel了,肯定咱们是更多的是不是后台这种或者服务器端去使用,那我们通常服务器端这个硬件的配置是不是就比较高啊。
05:01
对吧,那如果说你这个硬件配置比较低的话呢,那直接我们新生代老年代干脆都是串行的不就完了吗?那既然我们这个新生代呢,你使用这个并行的,我们通常针脆就是夫妻端在一个呃,高性能的一个场景下,硬件配置又比较高的时候,只有新生代呢,我们可以去并行啊,高效率的去进行垃圾回收,但是到老年代,老年代这块呢,我们既然使用了一个串行的这个垃圾回收器,那这个性能的话呢,显然是不是得不到更好的一个发挥啊。哎,会拖累咱们这个服务器应用上的一个性能。对吧,达不到我们说这个最大吞吐量的一个效果了,串行的,你想你能好到哪去呢。是这意思吧,啊,然后另外的话呢,我们说你这个组合啊,有点尴尬了,那你要不用这一组的话,人家是不是还有另外一组叫做panel合CMS的一个组合呀,对吧?我们说在这个这里是1.41.5的时候呢,就出来了这个CMS了,那么你要是piroline呢,搭配一个SOLD这就很尴尬了,那干脆呢,人家呢就用一个叫penel penel跟你这个性能呢还差不太多,然后我们在这个呃老年代呢,可以使用这个CMS,那这个搭配起来呢,就比你这个搭配呢要靠谱的多啊,这就不靠谱了是吧?所以呢,我们在这1.6的时候呢,一旦你补充了一叫parallel o以后,诶这呢立马呢就把我们这块短板呢给补充上了。
06:17
此时的话呢,我们就可以在服务器端是不是更好的去应用我们这个硬件的一个高性能是吧,新生代也好,老年代也好,我们呢,还讲求这个高吞吐量啊,那这时候一下子就把我们这个硬件的性能就更好的做了一个发挥,诶我们这个这俩组合呢,其实也作为咱们这个GD8当中的一个默认的一个,诶这个JC了,哎,没有使用这一组。没有使用这一组,OK,那另外的话,大家会发现在我们这个GDP14当中,是不是这个绿线呢,就加上了,相当于我们呢,就不在老年代当中我们使用S了。本身也不是特别靠谱是吧,哎,就是这样个场景啊,行,那么这个parallel o的话呢,就针对我们老年代,这个它呢使用的叫标记压缩算法,OK,那一说呢,就很清楚啊,会有一个碎片的一个整理过程啊,也是并行的一个情况,然后呢,Stop the word,呃,任何垃圾回收器都会有stop the word,只不过呢,就看它是不是持续从头到尾了。
07:10
啊,那个我们讲CMS的时候会提到这个并发的这个情况啊,行这呢就我们这个图示信用代的话呢,我们使用的叫parallel,然后呢是复制算法,然后呢,老年代呢是拍O的,我们是标记整理或者叫标记压缩算法,那也会有STW,嗯,行,不多解释啊。嗯,在吞吐量优先的应用场景当中啊,Parallel呢和parallel old呢,它的组合在服务器端模式下呢,它可以发挥非常良好的一个性能。啊,会可以发挥呢,非常良好的一个性能啊,这个呢解释呢,大家应该是比较清楚的啊,在JD8当中,我们也作为呢,是默认的垃圾收集器,哎出现的,咱们那会儿呢,给大家呢,不是也举这个例子了是吧?啊也举这个例子了,现在的话呢,咱们这个代码当中,我现在用的是九是吧?在九的时候呢,那会儿我们不是也稍微看了一下吗。咱们把这个呢,先暂时的都给它干掉是吧。
08:01
在九这个场景呢,咱们引入了这个叫G1,或者叫g first。嗯,往后拽一下,哎,这不是就叫这first吗?哎,那如果在这个八当中,咱们给它改一下,把这个呢,咱们先调成是八。诶,然后在这块咱们也调一下。在GD8的时候呢,咱们默认的使用的就是parallel。嗯,这个往后拽一下。在这呢是吧,这个parallel j c,那一旦呢,我们使用的是它的话呢,它也会自动的会触发呢,我们老年代呢,使用的叫parallel o的这个JC,它俩呢,相当于都是一个使用的状态。行,这呢,就是关于我们这个叫parallel它的一个介绍啊,跟咱们之前的这个panel呢,有什么区别,哎,大家呢,稍微的关注一下OK啊,那我们就现在说到这啊。
我来说两句