00:01
好,那么同学们我们继续那讲解完了我们的上三个参数以后,我们再来看看我们的。XMN,那么。一样。这个呢,也是一个XX参数,那么呢,它呢,就代表我们的什么new新生区年轻代的。大小,那么这个参数啊,一般你不用去调,可以用它默认,除非你有特别。基础的一些情况啊,我们在这儿快速复习的时候讲过,呃,这么一个东东哈,杨哥当时给大家弄过这么一个。就是在这儿。样去。新生代默认是多少?老年代默认是多少,一般哈,大家呢,都会用这个默认值啊。那么当然你非要调。还可以好,那么待会儿我们来说。这个参数待会儿我们过一下就行,因为一般调他调的很少,我们尽量调多的。
01:03
呃,不要为了调仓和调优而调,说每个参数要调一下,说实话,以Oracle公司的技术研发能力,到Java吧,这个JA吧,底层其实而言,你能想到的各种优化大概他都做了,只是说某些具体极端,根据你的业务情况,你可能确确实实需要调多一点。那么好,如果像这样的情况有没有呢?比方说这个meter space老师讲这个就应该调大,我们来看。首先me space俗称什么圆空间,那么它们都是方法区这种规范,这种概念的一种落地实现,JAVA7呢是叫云有带JAVA8叫云空间,那么它们最大的区别就是。永久带。就是P开头的那个permanent,那那个。它呢,还是在堆里面,而云空间并不在虚拟机里面了,更大,它直接使用本地内存,理论上默认情况下,原空间的大小仅受到什么的内存的限制啊,本地内存,本地物理内存的限制啊,你越大圆空间是不是就。
02:06
成转。的空间也越大呢,可问题这儿有个坑跌的情况。我们在后面的一道题目呢,会讲一个东西叫oom,这呢提前说一下。这个oom啊,其中杨哥会给大家讲一个懂不懂叫oom什么意思啊,圆空间爆出来了,那么为什么会这样呢?诶,你不是说做了优化吗?云空间已经取代了永久带,而且还说的是什么云空间并不在虚拟机中,而是使用了本地内存,那怎么这个云空间还会挂了呢?那么这个时候啊,同学们,我们不妨呢,拿着这个参数,我们来运行一下,给大家看看,那有个问题是什么。你原空间确确实实仅受本地内存的限制问题,它出厂的时候这个圆空间它给你配多少啊。那么来,同学们,我们不烦了。把它拿掉。然后我们。
03:02
直接干什么呢?Java。然后我们再粘贴一下诶。哎呀,干脆这样吧,拿这个配也可以。那么我们直接过来。粘的过程当中有点小问题哈,好,那么这样吧,那么同学们我还是就懒得敲了,我们呢,直接呢看一下什么。前面的这些内容。好,我们搂一眼哈。现在杨哥呢,在这一执行我们都明白初始值参数,最后我们先看看m space哈,什么概念,前面我也略带的提过一嘴哈,也就是说云空间它出厂默认大家看看哈,M开头。Pace,我们找找同学们PA size多少?21807104啊。那么同学们过来,我们来换算一下。
04:02
那么假设哈,是这个值啊。那么呢,除以1024,再除以1024,同学们请看多少?20.79兆。我们四舍五入就21兆,也就是说虽然说杨哥现在的机器物理内存是16个G,我的本地物理内存是16个G,但是我有这么多圆空间自己去取它自己取了多少啊,大概就是21兆,那么也就是说21兆如果你频繁反复的。去利用一些对象,那么就会把这个圆空间给撑爆,那么所以说有些时候我们为了保证GVM报尽量的远离oom的。这种圆空间溢出的错误,我们可以理论上把圆空间干嘛配置的大一些。那么呢,把上面这些参数呢,兄弟们,杨哥呢,串讲一下我们的一锅端,那么在这你要搞清楚圆空间它默认只是用了20多兆哈,不管你是几个G的内存。
05:09
那么有时候我们就需要调整一下圆空间的大小,那么就这么一个,它是一个KV设置类型的参数。那么来我们运行一下。我把它拷贝出来。同学们。那么调参我们之前也讲过很多,我现在呢,就说这么一句话,请同学们复习杨哥现在这些参数写了一些什么样的东东?好,首先初始内存我把它改成多少,128,最大对内存我们改成多少四个G。这个是多少,是不是我们的什么。初始。Stack占的大小,大家看我们的me space我改成了多少,我改成了是吗?512兆,那么这个呢,是后面的参数对不对?那么再来看这个呢?打印出GC回收的细节,我也把它添加这个,这个参数我们详细讲过。
06:05
这个呢,我们原来简单的提过一下,那么首先哈,因为后面我们要讲一个非常重点的题目,就是垃圾回收器,那么这个呢,代表的是什么。串行垃圾回收器。那么呢,我故意加这么个参数哈,因为后面我们会用,那么给大家混个眼熟,也就是说它默认现在的话呢,是什么。并行垃圾回收器了,杨哥故意把它改成了Siri,是不是序列化串行的意思?那么好,同学们,我们呢,来看一下哈。现在我们呢,直接呢,来依旧来运行一下我们的这个程序,那么好,假如说哈,我呢,就只留这么。一个参一个参数吧,假设我现在还什么都没改。同学们请看一眼。那么print command line flex前面讲过了吧,也是一种查看初始参数的,那么好,弟兄们,我们呢,一运行。
07:04
大家请看。现在我运运行了以后,也就是说我们。干嘛?目前我还没配杨哥自己自定义的,那么现在这哥们他配完了以后,他给我的初始值啊,那么也就是说我们现在GPM默认出产,它运行的是这些效果和内容,大家有没有看到这有一个什么parallel GC,言下之意,这个东东是叫什么东东,这个我们之前也介绍过,干嘛,这个东东是不是叫我们的什么?并行垃圾。回收器啊,那么并发的那个并行是吧,也就是说它的是现在JDK8默认的垃圾回收器,性能肯定要比这个要强,那么言下之线。杨哥现在要给大家演示这么一个,就说明我们改动了以后,那么你看哈,没弄之前我们说过了,是不是16G内存的1/64,这个相当于这个参数,是不是就是这个。
08:10
干嘛呢?最大堆内存是16G内存的1/4,大概就是四个G左右,那么好延下直线,那么也就是说我们用这个参数会打印出gbm默认加载的一些最简单版的初始参数,好,那么现在呢,杨哥是不是要把它彻底改了,那么来吧,给大家演示一下,那么我们一些经典的配置,其实如果人家问你说呃,你一般的常用参数是哪一些,我个人认为哈,最简单的你把这一条打上去。我个人认为也足够应付面试官的一般的考试了,那么过来同学们看一下哈,这个是没有配参数之前,那么大家看一下,这个是配了参数之后。我们的要有一个对比嘛,那么这个时候我们一运行,那么。大家请诶。
09:01
大家请看,那么这个时候。我们呢,给它分割开,我们这样一运行了以后,那么完全可以看到现在我们的值是不是完完全全就有一些变化了,大家看我们呢,是128兆,128兆是不是接近134字节。那么来这个是四个字,那么大家看4294完全比以前大了,那么这个时候我们的m spacece啊,没有派之前它呢,干嘛用的是默认20多兆,我们的mate space,大家请看Lowe,现在呢,我们是不是已经把它配成了512兆,那么好,没有配之前干嘛,它这儿根本就是没有打印出占空间,它用它默认的那个零。那么我配完以后指明是1024啊,你配的越大。理论上当然这个1024差不多了,你别超过太多啊,说明你报overflow。可能性是不是也就越小,因为你空间变大了,那么再来。
10:01
大家请看。变成了什么?默认我说过了,人家用的是什么并行垃圾回收器,周阳把它强行改成了什么创行垃圾回收器,那么大家请看,那么言下之意。那么我们的日常的配置的案例设置啊,就可以拿这种东东需要你的参数作为模板,到时候一张配到你的GPM里面即可。好,那么这个呢,就是我们一个常用参数的典型设置案例的一个简单的介绍。
我来说两句