00:00
那接下来啊,咱们看一下叫基因符啊,叫实时查看和修改GPM的配置参数,好,我们看一下这个基本情况,首先呢,这个基因for,它其实也算是一个缩写,叫configuration INF for for Java啊,然后反过来呢,叫基INF for了,它呢是用来查看虚拟机配置参数的信息,也可以用于调整啊,虚拟机配置的参数啊,这个叫查看,这个叫调整,调整就是修改啊,有点类似于我们Java b当中,这个呢相当于get一个参数信息,或者叫属性信息,这个呢叫set是吧,就一个呢查看,一个叫修改啊,这呢就相当于是对于我们这个参数呢,就是查看和修改啊,就是解份的一个作用。好,那我们看下边这样一个介绍说呢,在很多情况下呢,Java应用程序都不会指定所有的虚拟机参数啊,显而易见啊,这虚拟机参数呢,好几百个呢,那太多了是吧?嗯,那而此时呢,此时呢,开发人员可能不知道某一个具体的Java虚拟机的参数呢,它设置的一个默认值到底是多少。
01:00
比如说呢,我们想看一下咱默认的新生代和老年代的这个比例分配是多少,这个伊甸园区和survivor区,它的默认的比例是多少,对吧?那这时候呢,我们想查看的话怎么办呢?那你要去查这个,找这个文档的话呢,去找就很不方便了,那我们就可以使用这个叫诶紧音符这样的一个工具,对吧?啊那这呢,其实这是一个引入的方式啊,还有一个方式呢,就大家回忆一下,咱们刚才呢在讲这个。嗯,GPS就咱们第一个指令的时候啊,你看我们这个scanner啊,这个scanner,嗯,咱们在这个J里边演示也行,嗯,比如说你看这块啊,再回忆一下,咱们呢,再去调一下,嗯,咱们杰的这个scanner在这呢。啊,Scanner行,我把这个呢参数给它改一下啊,这呢咱们去设置一下,比如说他MX,嗯X行啊这个来一个100吧。叉MX,然后来个100兆,那我们设置完以后,这呢是咱们设置这个参数对吧,设置完以后呢,我们现在把这个程序呢,给它抛起来。
02:01
啊,那我们再回过来,这是来一个啊,清楚一下啊,这个JPS,呃,杠V记得吧,哎,咱们讲过这个,呃,JPSJPS-V,咱们先直接呢GPS找到我们当前的这个。这个不好看了,就它是吧,它这里边的话呢,咱们设置了一下是不是这两个参数啊,这个呢,是咱们设置的这个参数就能够看着了,但如果说呢,我们想找一些没有设置过一些参数,到底一个值是多少,我们使用这个GPS岗位呢,就不太靠谱了,咱们就需要呢使用啊现在呢,咱们讲到这个解infer这个工具啊解工具好我们来看一下它的一个基本的用法,这呢也有它的一个说明,其实呢,就是直接大家输入一下这个结,一会整出来,或者让你输入这个叫。哎,结一份呢。后面呢,再配一个这个help是吧。啊也行啊,这里边儿呢,就提到了我们整个这样的一个格式,输入一个option,然后呢,接着是这个进程的一个ID,这个进程ID的话呢,就通过我们这个GPS呢进行获取就OK了,然后呢,这个option呢,具体能够写哪些行为啊这呢就有一个说明。
03:07
啊,这有一个说明,然后把它呢进行一个归类啊,一方面呢就叫做获取啊,一方面呢就叫做修改,好这块呢,我们看一看啊,这个官方文档的一个说明位置跟我们上面讲的那个J一样,我就不看了啊哎,这个呢,咱们就直接呢给大家做讲解了。那这呢,我们刚才也提到这个结构了,具体的一些option呢,就是刚才提到这些行为展开来说,分成呢,查看和修改,首先呢,我们来看这个查看的行为算式呢,分成了三波啊,其实严格意义上呢,应该算是两波啊呃,三波吧,三波的话呢,首先第一个呢叫做比较简单,这个叫c pro啊,这个我们先把它呢做一个演示啊,这个打开。好,C pro呢,就展示一下咱们当前这个进程对应的这个程序的一些系统的属性信息啊,比如说GPS。GPS咱们现在呢,也没有启动一个具体的程序了,嗯,那咱们就以这个scanner为例吧,先把它呢跑起来。
04:01
可以了。GPS。可以行,然后呢,我们这时候呢,叫借音符。呃,然后大家去输入呢,叫a six pros啊别写错了,然后后边呢是3540啊做一个回撤。啊,3540啊。行,那这时候呢,大家会看到我们有好多的这个属性信息啊,好多这个属性信息比较多是吧?哎,这个属性信息的话呢,其实呃,大家呢,在这个Java层面,咱们也可以呢,通过这个系统啊system.get properties啊这样的一个方法呢,来进行获取。啊来进行获取,好这块呢,我就不过多的去说明了啊,不过多去说明了啊,行,这个就过了,我们重点呢,是给大家讲解下边这两个啊,查看当前这个进程的啊,这flagx啊,当前这个进程的所有或者我们就要被赋过值的一些参数的这个情况啊,那比如说我们就以刚才这个scan t为例啊,解INF for,然后flag,注意这时候有个S啊。
05:03
嗯,3540吧。行,这时候呢,我们就能够看到,呃,我们当前这个3540的这个进程,它这里边儿的一些这个曾经赋过值的都有哪些呢?你看主要看这啊这个呢叫非默认的是吧,然后这块呢,有一个command command line就命令行的,在命令行里边咱是不是设置过这两个参数吧。设置过这两个参数,而这两个参数呢,你看是不是也会出现在我们的这个位置呢。啊,是不是在这儿啊啊,这个位置是不是也出现了对吧?哎,多少多少这个字节啊,就这个呢,叫非默认的参数,非默认参数呢,一方面呢,是我们自己设置的啊,另外一方面就是系统也帮我们做过一些调整啊,这个使用压缩指针呢,呃,使用这个,呃,这个并行的垃圾回收器啊,对吧?诶这块都有显示啊,这都是帮我们做过一个设置以后的这个情况。这个呢,相当于咱们查看的这个是不是比较多啊,咱也可以呢,通过一个杠flag查看具体的一个进程,它的一个参数的这个值啊,这呢就写一个具体参数就可以了,那我们还以这个当前这个程序为例啊,写一份,比如说我们这呢,写一个叫注意别丢了这个杠啊。
06:10
我呢,比如说想看一看咱们是不是使用了啊,这个叫use啊。Now。啊,JC是吧,哎,针对是3540。好一回车,这个时候呢,我们会看到咱们当前这个是不是使用了这个并行的垃圾回收器呢,这呢是一个加号。啊,整个呢,关于这一章的这个说明呢,咱们呃,会放在这个第四章这里边儿,关于这个参数呢,去讲解一下。啊,在上边这块。那关于这块是吧,那咱去讲解这个类型的时候呢,会说哈,现在呢,咱们就先直接告诉大家,这里边这个加号呢,表示的就是使用了并行的垃圾回收器啊,那比如说咱们再换一个,比如说你是不是使用了这个,我们叫a j first是吧,Z的垃圾回收器。哎,No such这个参数啊,这个没有这个参数,咱们换一个这个啊。
07:04
哎,C这个JC,那这时候呢,是不是这个减号啊,就相当于是我们现在呢,哎,没有去使用这个串行的垃圾回收器啊,就是这样的一个意思啊好,那这呢,就是我们说的这个,我刚才这个。为什么这个G1错呢?是因为我这应该写成是G1吧,上面是一个GL了是吧?哎,再测试一下,那这时候呢,就没有使用啊好,那这个呢,就是整个归结为呢,是一个查看的一个效果,就是大家呢,可以输入我们具体的这个参数,看一下这个进程中的这个参数,这个值它是多少,当然呢,我们现在呢,使用的这个其实都是属于这个true跟false的啊,再再换一个。举的这个例子有点单一了啊,比如我们想看一下这个叫max keep size最大的这个堆空间的大小,哎,这里边你看显示的它就属于一个,呃,这个属性还有一个值的情况,上面呢,都属于这种布尔类型的情况,对吧。OK啊行,这是我们说的查看的问题。嗯,打开,然后下边呢,我们来看一下这个修改的行为啊,一方面能看,另外一方面呢,我们还可以去修改,在修改这块呢,大家你要小心一点啊,先来强调一下。
08:09
啊,这就是说不光能看还能改啊嗯,改的话呢,它能够立即生效。啊,很帅,立即生效是吧?哎,但是你要注意呢,并不是所有的参数都支持去动态的修改。并不是所有的都支持,只有被标记为叫manageable的flag才能够被实时的修改,那这个修改能力呢,十分的有限,你看这个意思就是说可以被管理的,就是你可以被修改的意思,那到底都有哪些呢?我下边呢,列的是一个在Linux下这样的一个指令啊,这其实我们是一个正则的一个情况了,是吧?嗯,这块呢,我就在这个Linux,因为咱们讲这个命令之前啊,我说了这个Linux和我们这个Windows呢,整体上来讲这个都是一致的是吧,这些指令都是一致的,所以呢,我就拿这个Windows来给大家去说明了,这呢,我就不在这个Linux啊,再去跑一次了,这个我跑完之后呢,看到这个数据呢,就是如下的一些。
09:00
所以呢,大家会发现这里边儿的指令是不是非常的有限啊,那整个呢,咱们这些这个这个参数的话呢,是有好几百个,那现在的话呢,你看只有这么一波可以去修改。这一波里边呢,其实分成两种,一种呢就属于这种出泡的类型的,另外一种呢,就属于这种具体数值类型的,对吧,所以这个修改的话呢,呃,这个类型呢,就也有区别。这个情况呢,咱们还是到这个第四章当中呢,给大家呢,也是呃,详细的去说清楚是吧,这种格式的类型啊,现在呢,咱们还是主要的这个以应用为主,上来呢就直接讲啊,然后第四章再从一个宏观的一个角度啊,我们归纳式的方式给大家讲解啊,那修改的话呢,这个咱们改一个吧,比如说改这个叫print j c details啊,针对它来进行一个修改。成过来之后。咱们打开这儿啊。啊解一份啊,首先呢叫flag,哎,这个就没有S了,首先咱们看一下啊,叫print j c啊details。
10:01
23540是吧,先针对于这个参数呢,我们看一下这个是不是写错了print啊。好,这时候大家会发现呢,我们此时是没有打印这个JC的这个信息吧,哎,所以你看它是这个减号啊,然后呢,我们再把它这个呃,写上之后呢,前面我们补上一个加号再回车。啊,这个时候呢,就表示我们修改成功了,修改成功之后呢,我们再做一个查看,你会发现呢,此时这个加号呢,就给我们补充上了,相当于咱们当前正在执行的这个进程,实时的就被修改了一个,这个参数就是print g c details呢,我们给它加上了。啊,就是打印这个垃圾这个回收的相关的这个信息啊,注意这时候呢,我们是一个,呃,这个叫什么布尔类型的啊,还有什么类型呢,比如说我们这上面有这个树脂类型的。像这个叫max hi free ratio啊,我们比如说对它进行一个设置啊,好了,那首先呢,咱们先解音符先看一下啊。
11:00
啊杠。Flag。啊,Flag啊,刚才我们说那个叫IMAX hi free啊,Racial。啊,然后呢,3540行,首先咱们看一下这个值,你看这个值呢,是不是100啊,哎,跟我们刚才这里边展示的这个数值呢,是一样子的,好,然后呢,我们给他做一个修改啊,对于这种数值类型呢,你直接在后边赋值就行,比如我们改成这个90啊再一回车。改完之后呢,我们再来查看一下。大家会发现,你看此时我们就给它动态的做了一个修改。啊,这呢就修改成功了,对吧,那这就OK了啊行,那如果我们当前这个,嗯,进程结束了。结束以后呢,我们再给它运行起来。那那问一下我们刚才这个90的修改还有效吗。啊,这个大家肯定都能猜出来啊,是不是就肯定失效了,咱们还得先GPS一下是吧。因为呢,咱们刚才那个进程呢,完全已经结束了,这相当于是一个新的进程了,对吧,那我们再来看一下咱们这个max free,这个max hi free的ratio。
12:08
6264。啊,再回车,那这时候是不是又恢复到这100了,对吧?好这呢就是咱们整个说的这个关于咱们具体的这个参数,它的一个查看啊,就是用这个用的更多一点啊,这查看的就多了啊,这个是我们查看具体某一个参数,嗯,查看的一个情况,这呢是修改的情况,但修改的话呢,我们说修改的范围非常的有限啊,这个大家整体了解一下就行啊。好,这呢是咱们说的这个,呃,G音符它的一个使用。
我来说两句