00:00
那刚才呢,咱们是把这个mini jc和这个for jc啊,咱们是通过自己一点点这样抠的方式呢,给大家都说了一下,那其实这里边儿的这些数据啊,咱们都可以看作是什么呀?呃,叫做这种原始数据对吧?呃,原始数据那大家你想这里边呢,你看记录了。哎,咱们看这吧,记录呢,就是我们这个GC呢,它发生的这个时间,包括它这个,呃,这个呢,是以这个年月日的方式,这个时间戳这呢是它GM开始执行到现在的一个时间啊,这两个其实都行,那么这一次这个GC跟我们下一次发生这个GC。你想它两个之间的话呢,是不是就是我们这个用户现场执行的一个时间,对吧?那包括我们这里边呢,也记录了你当前这个JC呢,它执行花费的一个时间,那么基于这样的一些数据啊,当它比较多的时候呢,实际上我们就可以去分析你当前这个垃圾回收器,它的一个吞吐量是吧,包括它的一个暂停时间,对吧?其实我们就都可以呢做分析了,但是这个数据呢,我们要自己这样去加减程度去做运算的话呢,显然呢,是不是感觉比较崩溃,对吧?尤其呢,是我们这个日志文件,你想想很多的时候呢,怎么可能我们自己再去分析啊,所以这里边呢,咱们就要使用这个,诶这些这个日志的一些工具了,这个咱们在讲这个上篇的时候呢,其实也都提到过一些啊,也不是特别难的这个事儿,相较于咱们前面讲的这个,比如我呃,VVM啊。
01:20
嗯,还包括我们讲的这个jpo Fi呀,阿尔萨斯啊等等啊,那这个JC日志的这个工具呢,相对来说那就比较简单了啊,就比较简单了,行,那咱们在这个上面的时候呢,提到过这个JCG啊,还有这个j c VIVO啊,其实还有其他的这样的一些这个日志分析工具,那相对来说呢,这个JCG呢,其实就比较好用啊,就比较好用啊OK,那这块呢,我们去做演示的话呢,先把咱们这个日志文件呢生成一下啊。这个日志文件呢,这块我想演示两个,一个呢,就是咱们在讲这个前面这个例子的时候呢,用到这个jc log啊,就是它啊,另外一个呢,就是呃,那会儿我们去讲解。讲解上面我们这个for这些日志解析的时候呢,提到一个是由这个Meta space造成的,对吧,呃,这呢,我也把这个代码呢拿过来了,行,那这两个呢,演示先演示谁后演示谁这都可以啊,那我们就比如说就它吧,先把这个数据呢,咱们整个的给它来一个CTRLC。
02:15
那这个数据CTRLC好,然后呢,放到我们这里边。嗯,找到咱们这个啊,这个五里边的麦达space OM好把这个数据呢,我们CTRL给粘过来行,这里边这个参数的话呢,其实大家都不并不陌生,这个呢,是打印我们这个JC前后这个堆空间的,对吧,这我们这下猛药了啊,这里边儿这个参数都很多,日志分析的话呢,给我们呈现的这个信息呢,也会比较多。呃,这个呢是显示我们这个年月日十分秒,这个呢是显示这个执行到目前的,就是你发生这些的时候呢,这个程序执行了多长时间的啊,下面前面呢,就是print j些details是吧?哎,我们说呢,哎,后边这俩呢,必须得有前面这样一个支撑,嗯,再往前的话呢,就涉及到我们这个,呃,一些基本的这个情况了啊因为这呢想演示的是一个圆空间嘛,所以我们也设置了圆空间的一个初始大小和它的一个最大的大小。
03:01
行,然后这些参数设置完以后,最后咱们把这个生成的日志文件呢,输出到一个目录下。啊,这个我们就杠X啊,Log啊JC啊,冒号一下,我写到这个D盘下,嗯,我叫啊就就叫这个O啊,别叫OM了,叫Meta。啊space啊,这个oom啊,叫这样的一个log文件吧,好这样呢,我们就apply ok1下行,这时呢,我们做一个RA执行。嗯,可以了是吧,好执行完以后呢,这时候我们打开一下咱们这个D盘,好这样的一个日志文件呢,就生成了,打开以后呢,就是这样的一些数据。啊,其实数据呢不算多,因为我们这个一执行是不是就出现了这个啊这个异常信息了,是吧?啊其实呢,真正呢,在线上这个系统当中,我们这个日志文件呢,有可能就非常的庞大了,所以这时候你再去自己打开去看,那显然不太靠谱,那我们一定呢,是需要借助于这个日志分析工具的啊。啊,这是一个,然后呢,咱们再把上面这个j c log test啊,把这个程序呢,咱们对应的这个参数呢,也给他拿过去。
04:03
啊,这呢也是下猛药了,里边呢,把我们说的这几个基本的这个参数呢,就全都加上了。好找到看艾。针对的是我们这个叫j c log是吧,那在这找一下那j c log啊,就它行ctrl a,然后CTRLB好吧,粘过来,然后这个呢,咱们也给大家输入到对应的一个这个日志文件当中啊,JC冒号。啊,这个D盘下的,嗯,我们来一个叫啊,就叫a jc log test就它吧,这样按log文件啊行其是正常,我们说这个用的时间呢来表示更好一些是吧,时间还有我们对应的相应的这个类的信息啊,这块呢,因为我们也没有其他的这个会冲突的情况啊,我就直接用这个嗯类名文件名来表示了。好,来一个OK,把这个程序呢,我们跑起来。哎,这个程序跑起来,嗯,这个程序的话呢,稍微可能得花一点时间,不像我们刚才那个OM直接呢就生成了是吧。
05:00
好,那他这块呢,先跑着啊呃,接着的话呢,咱们来说一下这个工具,那首当其冲的话呢,还是推荐呢,大家可以去用一下,这个叫JCE这样的工具,是在线的一个啊,JC日志的一个分析网站啊,这个你说它免费吧,它其实有一些这个服务也是收费的,嗯,这个一会我们打开网站就知道了啊,通过这样的一个网址直接就进入啊在线啊,其实也非常的方便,对吧?啊输进去一回车。嗯,这就进来了啊,这就进来了啊,进来以后呢,这块我们可以去选择这个文件啊,比如我们点一下这个叫选择文件。啊,咱们找到咱的这个地盘。嗯,D盘呢,刚才呢,我们是不是有这个,哎,现在这个也生成好了啊,我们先看这个圆空间的吧,哎把它呢选中以后呢,点一个打开啊,点一个alyze啊做一个分析。啊,这就可以了,行,那我们回到这个程序这块看一下,嗯,出现了这个,呃,由于我们这个对空间出现了这个OM了,行这个程序呢,这是算是就结束了,那它对应的这个嗯,日志文件啊就在这,嗯,这这个这个是是吧,那他俩就是啊行,那这块我们先收起来。
06:06
嗯,现在呢,咱们看到的属于这个叫圆空间溢出的这个情况。啊,我这块用的是在教室里边用的这个热点,这个网稍微的差一点,稍微差一点,所以这块呢,你看这个图表呢,还没生成好。哎,图表没生成好。嗯,刚才那不是提到它是一个收费的问题嘛,你看这块一个download的,就是把我们生成这个报告呢,我们想给它下载下来啊,这个我们点一下,那你看这块呢,就涉及到它有收费的行为。啊,因为呢,这里边儿有一些这个功能啊,你要想展示的比较好的话呢,哎,这个你得收费是吧,那这样的啊,行,这个咱就咱就别收费了吧,那点一下啊好,我们看一看。嗯,出来了,这个针对于咱们刚才这个呃叫什么圆空间的啊,这个溢出问题,那大家看一看这块呢,展示的说我们这个呃,新生代老年带它一个大小,诶这块你注意一下,咱们刚才在这块设置的时候呢,你看我特意的把它这个堆空间呢,设置成是60兆,然后呢,这个呃呃伊甸园区和区是一个八啊所以说这里边这个数据的话呢,应该很清楚了啊,我回到这块来描述一下吧。
07:10
咱们这个伊甸园区首先呢,呃,先说这个新生代吧,新生代跟我们这个O的区是1:2的一个关系啊,60兆的话呢,这块是不是就40兆对吧,那这块呢,就应该整个有20兆,那么这个伊甸园区的话呢,占它的8/10,嗯,那这就是一个8281066/10兆呗,然后SURVIVOR0SURVIVOR1啊是不是各自占两兆对吧。行,那再加一起的话呢,一共就是我们说的60兆,那这里边呢,我们能看到说你这个样区它分配的是18兆啊,这块就比较清楚了,是不是就是这个16加上其中的一个就行啊,那我们那会儿呢,也讲到这个问题了,对吧?好,这是这个事儿,然后呢,这个O特区呢,这40兆,注意这个数据呢,都是来自于咱们那个log文件啊。那在这看不到了,咱们刚才分析的那个log文件,也就是说那个文件当中呢,其实你还原回来啊,就是这个数啊,就这个数,然后Meta space,嗯,这块咱们设置的,因为是十兆嘛,所以就是十兆这块是把它们加一起的这个数。
08:08
没问题是吧,哎,加起这数啊好呃,这是它然后的话呢,嗯,我们前面你看这个数的话呢,它是呃,按照这个六十来算的啊,哎,没有啊,这这不按18了,按二十来算的啊,这个有一个小注意点是吧?然后的话呢,这块有一个叫pickak啊,就是说我们在出现这个溢出的时候呢,这个最后啊,相当于是我们这个顶峰的时候啊,相应的这个空间它占用的一个大小,那这里边我们能分析出来什么数据呢?你看这呢,就是我们分配的一个大小,对吧,这呢是呃,出现溢出的时候呢,这个在这个过程当中,我们各个部分呢,顶峰的时候呢,它的一个分配的大小。那这里边大家会发现谁呢?那一般情况下,我们说这个数值都是小于它的对吧,一般都是小于它的,那这个样样区的话呢,小也比较接近,那因为我们在接近的时候呢,就要发生这个young GC的对吧?嗯,这个的话呢,始终我们能看到这个堆空间,你看这个堆空间里边新生代诶不是说错了,这个老年代这块呢,你看始终占用的不高,因为咱们这个例子呢,主要演示的是不是这个圆空间这块呢,占用的比较多,所以呢,你看这块达到8.95兆啊,后边呢,我们再去加载这个类的时候呢,它就超出了我们这个me达能承受的范围了,所以就报了我们这个OM啊,然后叫me达space了。
09:24
哎,主要呢,就是这个数据呢,你看它会偏大一些。啊,它会偏大一些,那对应的咱们另外一个呢,你看我这块再后退一下,我再选那个文件。找咱们这个啊这个啊j c log test是吧,这个程序的话呢,先分析一下,咱们这个的话呢,针对的就是咱们这个老年代不够了,对吧,你看我们这里边儿这个造这个对象,这个对象的话呢,一开始新生代不够,我们就往老年代放啊,放放放放一直放到老年代呢,就给移出了啊这是报的就是我们这个情况嘛,对吧?啊那这个呢,我们要分析的话呢,大家你就会发现。啊,大家你会发现,你看啊是不是就不一样了,咱们这个里边呢,明显的就是由于这个啊,最大值在这个老年代这块呢,你看它达到了这个顶峰40,跟这个是一样了,那下一刻你要是再老年代去分配的话呢,它不就OM了吗?啊这个时候呢,叫hi space是吧?啊就是我们这个堆空间给移出了。
10:19
啊,这个情况行,那咱们就那接着说这个的分析吧,那这块呢,能看到这信息啊,应该比较直接是吧?嗯,就是我们这个,你看老年代这块呢冒的啊出现了这个问题好。再往下的话呢,我们看到啊,这是关于什么呢?啊,这是关于这个吞吐量的啊,我们的吞吐量是99.87837%啊这个应该还是不错的啊啊这个呢涉及到这个呃,一个呢,我们关注的叫吞吐量,另外一个呢是叫低延迟是吧?哎,这个延迟这个情况说呢,平均的这个GC的一个time是诶5.56毫秒,那最大的时候呢,是20毫秒啊,最大是20毫秒,那么这呢是一个百分比说呢,在零到十毫秒之内的,这个是由占到88.89%,啊这个呢是百分之十一点。
11:04
呃,11:11啊,然后均摊一下的话呢,是哎就这样,哎5.56毫秒啊这样的一个情况。OK,这是我们说的这个它啊,这时候咱们用的是什么呀?是不是JD8默认的是这个叫parael是吧。呃,Parallel这个JC这个parallel这C呢,咱们也提到过,它重点关注的是不是叫这个什么吞吐量对吧,所以说呢,你看这里边这个吞吐量呢,相对来说就比较大一些啊,那这块这个数据呢,相对来说就没有那么理想了,大家呢,你也可以考虑把它换成谁啊,一个呢是这个CMS啊,搭配上我们这个钮是吧。看搭配我们这个pen钮,另外一个的话,你也可以可以使用这个,我我们说这个g first啊,垃圾回收器,哎,你看一看这个吞吐量多少,哎看一下这两哥们呢,主要主打的是叫低延迟,你看这个延迟的时间是不是降低了啊,我这呢就不演示了啊,哎大家呢,可以测试一下,只需要呢,在这里边你是不是把那个就use j first j c那个参数加上就可以了,是吧,生成那个日志文件呢,在这进行分析啊就妥了。
12:06
行,再往下啊,再往下的话呢,我们看到这里边儿有一些信息,比如说呢,我们这个JC之前的一个堆,它的一个占比情况,那你看这里边儿的个这几个三角,就是咱们发生这个JC的这个点啊。哎,发生JC的这个点啊,下边的记录的是这个时间啊,这不是八点多嘛,是吧,这是记录这个时间轴啊。嗯,因为咱们这个呢,程序模拟的嘛,所以这个时间呢,你看这个跨度其实比较小是吧。这是呢,JC之后的这个对空间啊,这是之前的一个对空间的一个情况。好像差别不大是吧,然后下边呢,是这个呃,JC的一个duration啊,就是它发生的这个几次这个位置上啊位置。嗯,这个这个没啥了,然后下边呢,是这个young generation,就是我们说的这个mini j c是吧。嗯,JC或者说呢,就是我们这个样区应该是啊,这叫young generation,就是我们这个新生代啊。
13:01
这个不是说我们这个样JC了啊,新声带这个新生带的话呢,这是我们分配的这个空间的大小,那18兆嘛,18兆我们不是16加二嘛,对吧,然后这个红色的话呢,是我们发生GC之前啊,是这样子的,然后呢,11GC啊,一下子你看就降下来了,又上去之后呢,又GC又降下来了,那降下来的数据往哪放了呢?我们是不是就放到这个老年代里了。所以呢,你看这个老年代这块就挺有意思的,这个我们发生这些之后呢,发现呢,这个呃,老年代这个数据反而涨了,那这就是由于我们新生代的那个数据呢,是不是就放到我们这个老年代导致的,对吧?然后呢,最终效果就是我们阿尔GC之后,你看这个偏紫色的这块呢,是不是就满了,诶满了的话呢,这就。哎,出现我们这个堆空间的啊,准确的说是老年代的这个OM了啊。麦达space这个呢,咱们是没有设置它啊,这有个默认值啊。OK,那这个呢,就我们发现这样的一些行为啊,嗯,包括呢,我们这个GC的一个一个统计啊,这是一个多少兆,相当于是是吧,哎,这是他的一个情况啊,这是他的一个情况,然后这是一个时间的啊,平均的一个时间的等等等等等啊这块呢,我就哎不多说了,这个呢,就是我们说j z easy诶给我们分析的一些数据啊,那大家呢,根据实际情况啊,这是。
14:18
关键得到以后呢,诶,我们可以考虑使用这个j CE easy呢来进行一个来分析啊好,现在关于JCEZ我们就说到这儿。
我来说两句