00:00
好,同学们,那么接下来哈,这四个说了以后,我们来逐个拆解。第一个。那么干什么呢?我们呢?S,这叫串行垃圾回收器。那么什么意思呢?它。为单线程环境设计,且只使用一个线程进行垃圾回收。会暂停所有的用户线程,不适合服务器环境,那啥意思呢?同学们先不看。左边的啊。现在蓝色的线叫运行的线程,比方说这儿就是我们的运行程序,但是运行程序的过程当中有对象的申请、释放和回收。到达一定的。峰值了。后台启动什么我们的GC线程,那么这个时候干什么呢?
01:01
程序要往下运行。但是。已经到了垃圾太多的情况下,我们必须干嘛?停下来你的程序,然后来进行一下垃圾收集,然后你的程序再运行。好比是什么概念呢?你现在在餐厅吃饭?现在呢,突然有人告诉你,这位顾客,麻烦你请离开一下餐桌,我们要打扫一下卫生,等我们打扫干净了,你再过来,然后你再继续用餐,这个就是用餐,打扫卫生,用餐,那么言下之意,这个时候你懂的。你在用餐的这个过程,也就是说你的应用程序是不是被中间打断了一下呀,那么你可想而知啊,如果是一个高并发的系统,它作为生产服务器。我程序就他妈暂停了三五秒。可以吗?双11那天。我们那样高并发服务器,那你们等一下啊,不要下单下订单了,我们先整理一下后台的垃圾,停一下程序和应用,你说这种情况那绝对是什么找死加坑爹,那么所以说创新垃圾回收的意思就是说。
02:12
我们现在后台有一个单线程,它就是GC垃圾回收的线程,那么言下之意,它启用的时候会暂停所有的用户线程,所以说干嘛它不适合服务器环境那么简单一句话就是程序,GC程序。好,那么接下来创行要暂停,那么并行垃圾回收呢?那么它是这样的多个垃圾收集器工程干嘛并行工作,此时用户线程也是暂停的,适用于科学计算和这些什么。弱交互场景,就是说跟前台的交互干嘛。不是特别强,允许你稍微停一下,说白了那么干嘛呢,现在就是它跟这个创新也差不多,有点类似于什么。
03:02
我们看一下往下。滑。串行单个垃圾收集线程,而这个变成什么黄色的多个垃圾收集线程?你可以这么理解,用户在餐厅用餐,突然出来了一个清洁膏,说你们呢?离开一下餐桌,我要先打扫卫生了,没办法,得消个毒,我们走,你垃圾回收完了以后,我们再继续用餐,这个时候是什么?只有一个,那么parallel是什么?并行言下之意是什么?它的加强版现在就是一个扫地工人不够用,我们来多个清洁工,那么这个时候干嘛停顿的时间会比以前呢?短缩短很多,性能要比左边这个单一的串行要好有点,我们初中物理是不是学过一个什么并行电路?和一个什么串行电路,那并行的话,只要一个挂了,整条线上的蚂蚱都挂了,那么。
04:01
而串行如果一个挂了,整条线上的蚂蚱都挂了,如果并行电路的话呢,那么你们懂的,那么干嘛,一个挂了另外的是不是还能用啊?好,那么同学们这个就是我们的什么并行垃圾回收器。那么接下来第三种,那么无非就是说单个变多个,还是程序要停啊,但是有时候我们生产服务器,程序是不能停的,那么我们有一种回收方式叫并发垃圾回收器,那么呢,这个cmos是什么?Concurrent就是俗称什么。并发标记清楚,那么OK干嘛呢?就是用户线程和它的线程可以同时执行。干嘛?不一定是并行的,不会说一个停一个干,可能交替执行,不需要停顿用户线程。互联网公司用它用的最多适用于对响应时间有要求的场景,也就是什么强交互的场景,就是说我前台不能停,你稍微0.0001秒,哎,可以忍上,你可能停个七八秒,那不行,那么言下之意什么概念呢?这种情况还是这样一个情况。
05:05
来Mo我们应用程序,请看干嘛?他不用完全暂停。听懂,言下至有点类似于说,那这个用户啊,我们现在呢,要打扫卫生了,那你看这样行不行,你们先到一号桌去吃饭,我们先把。二号桌打扫干净,待会儿我们把二号桌打扫关干净了,你们再从一号桌再换回来,那么这样的话回答我是不是可以,你看并发嘛,有点类似于是什么概念呢?那么呢,一种情况,有时候需要停一下你扫,有时候你可以边执行用户的,一边执行用户的应用程序,一边再进行垃圾回收,那么这样的话,这样的并发标记清除,甚至可以这么讲。前面的扫地第二种多个人扫地,第三种干嘛呢,我们呢,既有扫地也会有什么情况,有人在同时他是穿着。
06:02
那这块的话就一定要注意啊,这个并发。它是可以交互的,一边有程序运行,一边来进行垃圾回收。那么OK。我们呢?简简单单的呢,再过一下他们三个。串行、并行并发。那么好。说白了,同学们,串行就是单线程环境设计的,什么单线程的垃圾回收。这是创新。而且他会不会暂停用户线程会暂停就是。单线权会暂停。创新完了以后,说白了就是并行垃圾回收器是它的什么加强版,那么。一个清洁工不够用,我就来多个清洁工,那么就是多个垃圾收集线程是吗?并行的在进行工作。那么好。此时,用户线程也会暂停。
07:02
第三种。并发什么概念?可以,用户的程序和垃圾收集干嘛同时进行,当然后面我们下一题我们会详细讲哈,它这个其实呢分成四步,有两步呢,也还是会暂停一下,但是呢,比起像这个完全停的话呢,要好很多。那么干嘛呢,它呢属于并发,那么。这上面这三个呢,我们呢,来简单的。这个突然死机了,好,稍等哈。那么。老图,刚才软件崩溃了,OK。那么来,同学们,我们继续。那么上述三个呢?我们来总结一下。首先,创新。绿色是我们用户的运行程序,红色是GC线程,那么大家请注意。
08:02
正在运行到一定阈值了。那么好,不好意思啊,暂停,我们要进行垃圾回收,收集完了释放的内存你再运行。这个用户会暂停。这个并行,那说白了是不是一个清洁工不够用,我们来多个,那么来同学们。我们可以看到它这块呢,就是相当于什么暂停的时间是不是要比这个短,也还是会全局暂停,那么什么意思啊,一个清洁工干的肯定是不是要比这四个清洁工要慢。好,我们接下来。Stop the world s tw在GVM里面叫。就是停顿,这个是很严重的一种性能哈,还有看抗并发,那假如说说白了就是串行和并行都会产生是吗?暂停整个应用,暂停了整个应用时间可能会很长。那么但是呢,我们的CMS c Mo呢,就是这个C就是并发标记清除的意思啊,大家可以看是不是绿色的应用程序和红色的GC垃圾回收,他们两个可以同时进行啊,那么OK,这个东东就。
09:11
是我们的三个主要的,那么可以这么说。截止到JAVA8以前,主要是这三种垃圾回收器在跟我们来进行。工作上的配合,那么比如说痛快点,假设现在外面用哪个杨哥,那么如果是Java吧为例,如果你是互联网公司,基本上后面你会要把它的垃圾回收器改为并发标记,清除c Mo。那么好,那么接下来我们再来看一下我们的第四种。那么这些我们就把它删掉哈,现在呢,就是说干嘛呢,垃圾回收的方式啊,那么。来第四种以后变成了什么呢?那么同学们干嘛?123是不是发现小块小块小块的了?那么这就是我们的是么?GG1的意思是什么呢?就是这个garbage first的英文缩写,那么俗称G1垃圾回收器,那么这个是呢?从JDK7开始验证到JAVA8。
10:13
诞生JAVA8就可以开始用它了,历经了十年的精心准备和论证,它才诞生从JAVA9开始,这JAVA9的默认垃圾回收器就是垃圾回收方式就是G,那么当然从JAVA11又变成了G忆的更高版本ZGC,好,那么这个呢,了解一下,但是限于我们现在的深度和要求,呃,这四个OK了。那么好,同学们,我们来说一下积极垃圾回收器什么情况呢?刚才可以看到是不是把。它分成了一块一块的,像拼正方形一样,它是将堆内存分割成不同的区域,然后并发的对其进行垃圾回收,那么OK。这个。非常重要。那么今天的重点完善。
11:01
创新并行并发,第一就是我们的这四种主要的垃圾收集器的主流的四个方式,那么具体他们更深入的细节呢?我们下一题再给大家进行讲解好。那么这个就是我们的。垃圾收集器和垃圾回收算法,他们之间的一个关系一定要把握住串行、并行、并发、记忆这四个。
我来说两句