00:00
大家好,我是上微谷的讲师宋洪康,那从现在开始呢,我们来讲解GM从入门到精通的第三个篇章,叫做性能监控与调篇,那在之前的时间里边呢,我们给大家已经讲过了两个篇章,虽呃分别对应的呢,叫做内存与垃圾回收篇,还有呢叫字节码鱼类的加载篇,那很多同学呢,之前也看过了前面两个篇章,然后呢,也在网上啊,包括呢,通过微信等等,呃,去催着我说,诶问宋老师什么时候来更新咱们的第三个篇章叫做性能监控与调优篇啊,那这儿呢,我们就开始来讲解咱们的第三个篇章。那大家呢,之所以非常看重第三个篇章,当然呢,非常的简单的道理,就是我们在实际开发当中真正关心的那当然是关于GM的一个性能监控以及性能的调优,说的直白一点,就是我们前面积累的内存结构片也好,垃圾回收片也好,包括呢,我们去熟悉类的加载和自节码文件的内部结构,最终目的呢,我们都是奔着性能监控与调优来的,对吧?那这儿呢,实际上也对应着咱们在讲这个上篇和中篇的时候呢,对应的一个图。
01:13
哎,我们稍微的再来看一下。啊,实际上呢,就是这个图对吧,那我们最终目的呢,是要进行一个性能的优化啊,或者叫调优,那调优的前提呢,我们需要有相关的一些监控的一些手段,不管是通过命令行也好,通过可视化工具也好,我们要能够监控到相关的,比如比如一些相关的JC日志的数据,对吧,还有运行是一些相关内存结构的参数,那我们才能够便于进行性能的一个调优,那前边呢,就是我们之前讲的上篇和中篇的内容。那咱们呢,就正式来开始讲解这个下篇啊,性能监控与调优篇这儿呢,当然也是在大家一线调优,包括呢,在面试当中,哎,非常重点的要被问到的一些内容。那这个一如往常,我们给大家讲解这个内容的时候呢,仍然包括五部分的内容,分别对应的有咱们的课件,有软件啊,有对应的我们必要测试时候的一些代码,有我们的视频,还有相关的一些图示啊,这呢都能够给到大家,那同时呢,在呃多说一句,咱们在第三个篇章讲完之后啊,1233个篇章合在一起,咱们会出一本书,那有幸呢,应该在2021年会给大家呢推出出来啊,大家呢可以稍微关注一下,那么最后这个呢,大家会看到我还有一个叫大厂面试篇,这个呢,我们可以针对于啊常见的这些大厂的一些面试题,后续呢,作为一个花絮式的啊,给大家呢做一个讲解啊,那其实呢,我们在讲完上篇中篇和下篇之后,从内容上,内容上来讲已经算是完整的,只不过呢,我们是还便于大家呢,更快速的去直接上手一些常见问题,所以呢,这也可以算成是一个抽取的一个总结之类的啊,从内容上来讲。
02:59
其实上中下已经是OK了,好,那这里呢,我们就打开课件啊呃,我们一共是给大家呢,在下篇当中准备了有八个章节啊,正如大家看到的这样,那首先的话呢,我们分别就每个章节呢,简要的给大家呢做一个说明。
03:16
首先呢,咱们来看第一章啊,第一章呢叫做概述篇啊,当然这里边这个内容啊,哎,正如我们说的叫概述一样啊,我们呢,更多的是来讲解一些文字上的东西,比如说呢,我们在生产环境当中都会遇到哪些问题,咱们才需要进行一个调优和监控呢,为什么要调优呢?对吧?啊,以及呢,我们调优的相关的大方向是什么,那具体的一些步骤。啊,优化的一个步骤是什么样子的,还有呢,我们怎么才能够衡量这个调优的性能指标变好了,还是说呢,变得更差了,哎,这一个指标都有哪些,那这儿呢,当然是我们真正在调试当中,大家非常关心的一些点,对吧?那同时呢,也是在面试当中,哎,也会容易被面试官问到的一些场景啊这儿呢,大家需要做一个关注。
04:03
那么第二张呢,我们叫做GVM监控及诊断工具啊,那诊断工具监控这块呢,我们实际上呢,是有两个篇章,那第二张呢,我们叫做命令行篇,第三章呢,我们叫做GY篇。顾名思义对吧,那命令行呢,就是我们看到的具体的一些指令啊,GI呢,就是一些具体的工具了,对吧?那这里边呢,有一些咱们在讲到上品的时候呢,也多少带着大家呢直接用过,那我们没有系统性的做一个讲解,这呢也是咱们下篇呢,呃,首先要给大家做讲解的,这里边呢,涉及到了,呃,有一些大家可能也都比较熟悉的啊,像GPS的接state呀,接infer呀,接map呀,是吧,还有我们下边这个接he啊,接stack,接CMD,接state。等等啊,这样的一些常用的命令的这个这个指令是吧,大家需要能够熟悉啊,需要会用啊,那当然很多时候呢,我们在真正开发的时候呢,不一定呃,需要熟悉所有的这样的一些指令啊,有的时候呢,我们都会在相关的一些工具当中已经集成好了,对吧?哎,但是这呢,也算是一个基本功啊,需要大家能够清楚。
05:09
那第三张呢,我们叫做JY篇,那就是涉及到了具体我们在监控的时候呢,诶我们有一些工具集成好的工具可以使用的,那首当其冲呢,就是Oracle官方在JDK里边呢,给我们已经集成好的这样的几个工具啊第一个呢,叫做j councilo,第二呢叫whsle vm,这两个呢,我们其实在讲上边的时候呢,多少大家也都见过,对吧?还有一个呢,在Oracle jdk当中集成好的叫做Java mission control,那我们也也简称了叫GMC对吧?啊叫做GMC,这呢都是or官方提供的,那除此之外呢,我们还要呃给大家介绍几个工具,第一个呢,诶比较老牌一些,Eclipse呢,叫MAT这样的一个插件。那还有呢,呃,一个收费的叫做j pro啊,那另外呢,还有一个就是阿里巴巴现在在很多企业里边也应用的这样的一个监控工具啊,叫做啊阿尔萨斯啊阿尔萨斯啊,翻译成中文呢,叫阿尔萨斯了。
06:06
好,那还有其他的像比较这个小众一些的啊btrace还有这个火焰图等等这块呢,我们第三章当中给大家呢,诶就是把这些常见的一些工具呢,做一个讲解,OK,那第四章的话呢,我们称为呢叫GM运行时参数。那有的同学呢,会说过,我们在讲上篇讲这个内存结构,讲这个垃圾回收的时候呢,实际上我们已经使用过相关的一些参数了,只不过那个时候呢,我们直接就上来用,没有详细的给家展开这些参数的格式是什么样子的,所以首当其冲呢,我们先给大家讲解一下GM参数的一个整体类型,这呢提到了类型一叫标准参数选项啊,还有呢,类型二就杠X参数选项,还有杠XX的这个呢,我们在前边呢,是不是都多少都见过对吧?哎,多少都见过,你像我们设置相关的这个,呃,占空间呀,对空间的这个,呃,这个初始化的大小还是最大的一个,对空间的大小,这个时候咱们都使用过相关的一些这个参数了,对吧?这呢,我们首先对格式上进行一个整体的讲解啊,高屋建瓴对吧,那那通过这个格式呢,去指导我们写下边的这些参数。
07:13
那下边的话呢,我们来看一看在常见的一些工具当中是吧,或者一些开发场景当中,我们该如何去添加GM的参数,这个呢非常具有实用性,那再下一步呢,我们就得看一看添加到底应该加哪些参数,那这里边儿呢,首先说我们如何去打印你设置的这些参数。啊,打印你设置的这些参数,然后再接下来呢,我们再谈一谈在日常使用当中,我们关于内存结构对占方法区该如何进行设置,然后呢,还有这个auto memory相关的一些选项,包括垃圾回收器相关的一些设置,这个咱们在讲JC的时候呢,其实也哎给大家是不是多少都演示过一些常见的垃圾回收器及其对应的参数设置啊。对吧,哎,这个大家可以再翻一翻咱们讲的上篇的内容啊,那这呢,咱们也会这个统领式的,再把这个内容呢,再给大家稍微说一下啊。
08:02
那以及呢,在这个JC啊过程当中相关的一些参数的设置,那还有呢,其他的一些参数设置,那这块呢,常用的一些参数需要大家呢熟悉,那当然了,功利点讲,面试当中也会问到你对吧,你常见的一些这些参数都设置的都有哪些,那这个呢,大家要根据我们相关的一些功能啊,你要能够说出来,OK,行这呢是我们说的关于这个参数的一个具体的设置情况,另外呢,我们在最后一个是呃,在Java代码层面呢,我们如何去获取GM的这个参数啊,这就可以了。这呢对应的是咱们的第四章,那第五章呢,我们就要分析JC日志。咱们在讲上篇JC的时候呢,关于日志呢,其实也简单的做了一个分析啊,作为这个知识完整性的一部分,那我们在下篇讲解的时候,为什么又谈到J日志呢?啊,因为它是我们重要的进行JC条的一个这个参考,对吧?所以呢,我们要再提一下这个JC的日志,那首先呢,关于JC日志的参数,那这里边其实很多我们在讲上篇的时候呢,给大家也提到过这呢,我们在重温一下,然后呢,日志的一个格式,针对于这个叫MJC的日志解析,然后for jc的日志解析,这个我们都要再再强调一下啊,再强调一下那特殊的一个问题,关于新生代和老年代这个内存比例的一个参数设置的问题。
09:20
那最后呢,我们再引出这个JC日志的一个分析工具啊,像j cec,还有相关的其他这个工具啊,这是惠普推出的这个是吧?哎,这个大家呢,能够做一个整体的一个把控啊,相当于是工具呢,要能够为你所用啊,针对于这个日志呢,我们要有一个清晰的一个这个使用啊认识是吧。好,嗯,这呢是我们说的第五章,然后第六章和第七章呢,那其实对应的就是我们实打实的一些具体的场景了,那第六章我们是针对于OM,那实际我们生产环境当中,OM呢是我们非常关注的一个大问题,对吧?那么OM通常常见的都有哪些场景呢?这儿呢,我们罗列出来了四个典型的场景,那么针对于这四个典型的场景,我们看一看这些问题出现的原因是什么。
10:07
然后该从哪些方案方向呢去解决,以及呢,最终我们是如何解决的啊,这个都是实打实的,这个呃,生产实践当中的一些问题,这呢也是大家需要提升经验的部分啊,包括面试当中,呃,面试官最关心的当然也是这块的问题,对吧。好,那第七当中呢,当中呢,我们涉及到叫性能优化的一个案例,那我们从哪几个角度对程序进行优化呢?啊,那这呢,我们一共提供了相当于是叫六个这个相关的案例了,对吧?那这个案例呢,在引出之前呢,我们先给大家讲解一个性能测试的工具,叫做解matter啊,压测的工具啊,那通过这个工具呢,我们在呃下边案例当中呢,会有所体现啊方便呢,我们能看到相关的这个效果了。那具体的这个我们现在呢,就不暂时的去展开了啊,这个大家能够看到我们这个案例呢,写的还是比较接近于生产实践的,那最后呢,我们再提一个日均百万级订单交易系统如何设置GM参数的一个问题好。
11:05
啊,那那当然呢,这七个章节之外呢,我们最后其实严格上来讲,这个第八章啊,已经不算是我们GM这个层面的了,那可以呢,专门有一本书,或者我们一个方向呢,咱们就来谈一谈性能优化啊,Java的性能优化对吧?啊,比如说有代码层面的呀,比如说甚至还涉及到一些硬件层面的一些这个优化等等啊,这是我们相当于额外又给大家补充的一个第八章节而已啊,那当然大家当然你。更关心的就是生产实践当中,我们六跟七这两个章节,那要想能够更好的掌握六跟七,我们还需要前面的一些相关的辅助的内容,好这呢就整个构成了咱们性能监控与调优篇啊,这个下篇的所有的内容,好这呢是我们一个梗概,然后接下来呢,我们就按照这个顺序从第一章开始给大家讲起。
我来说两句