00:00
好,各位同学,那我们上一讲简单的复习了我们的。对内存的初始分配,那么接下来我们就来看看我们在日常的一些最基本的调优参数。那我。看了一下呢,考的呢,比较多的,也就是说你说的出去,也就是说有一些参数吧,比方说面试官也记不住你去答了,反而呢。让面试官呢,觉得呢效果不好,那么从我们的经验和工作中常用那。这些参数,我个人认为你回答一下足够好。以前讲过的我们就快快的过一下,没讲过的我们来详细讲解。首先这两个。不说了。同学们。Lawyer。OK。一句话过。接下来我们要说一下一个问题,就是什么呢?干XXS诶。
01:03
有没有发现这个这个这个还有包括这个都跟它差不多,那不用讲,现在同学们回答我,大家觉得这个应该是一个X参数还是XX参数。100%是我们的XX场所,那么它等价于哪一个?又是什么意思呢?第一个。设置单个线程占的大小,就是占空间的初始默认大小,一般根据内存系统和尤其是操作系统的不同,就是你的Windows还是Linux甚至JDK的版本不一样,都会有些调整,一般默认是512~1024K。有些同学可能会觉得说这么小是吧,其实在占空间哈,它是很小的,那么呢,它这边我们讲过gbm那个图是灰色的哈,它是现成什么意思啊,私有的一般都是管运行。那么它等价于这个。线程占的大小,那么接下来这一点要跟大家详细说一下,干。
02:00
XSS。不多说,回到我们原来这个小case啊,那么盘点一下加点我们默认的这个占大小是多少呢?那么好,比如说我现在哈,还是熟悉的配方,还是熟悉的味道,同学们搂一眼GPM,这是不是什么都没配?那么好吧,我们现在直接呢,来运行我们的hello GC,老规矩GPS。肝癌了,那么这个时候我们的G孕妇给我查看正在运行中的什么?Hello GC这个程序它的一个初始值,那么言下之意,根据我们的脑图,我们就知道初始的单个线程占大小的。它的等价与这个sta size这拿过来,那么这个时候是我们的。这一个。那么这个时候thread stack。
03:00
Size,那么这个时候干嘛呢?我们的hello GC是16048。那么来,同学们。大家猜一下初始值是多少?那你可能会说,那杨哥你这不废话吗?你这都写了好。思考一下。我讲错了对不对是吧,可能吗?但是零思考一下。好,那么同学们几乎是鸦雀无声,来说一下。这个问题曾经呢,也让我迷惑过。什么意思呢?第一个我们都明白,如果这个值是个零的话,那不用减。你方法运行怎么着也要有点空间吧,这个有时候就是有没有是一回事。有了以后多少又是另外一回事,那按照杨哥你所讲的,如果是这样的话呢,是这个数值的话,那起码这写个512嘛,对吧,代表KB,那么这个时候的话呢,你可能会。能接受,但这写的是个零。
04:02
那这是为什么呢?好,那么来,同学们,我先不管废话,我们现在呢先把它停掉,然后呢,现在杨哥呢,干这么一件事。看XXXXX,假设,呃,我们就128K,这么说能跟上。没问题吧,那么这个时候同学们,我们再来运行老规矩,当前正在运行的程序,这个时候干嘛?7424,那么来同学们,我们呢,直接导出我们的金符,还是这个通道,那么大家请看7424,那么来同学们。多少128,哎,神奇了,零也能运行,128也能运行,这个128是不是我刚刚配的绝对正确。那么我们的配置是会了,那么底层原理是什么呢?听好,就一句话。如果零。就代表用的是系统出厂默认值,那么这个时候呢,同学们我们来查一下JAVA8的文档哈,那么杨哥呢,给你查了多个版本哈,那么这个时候呢,很多呢,同学呢,就喜欢去查一些技术上的帖子啊,或者百度,哎呀,坦白讲,大部分都是什么,谁抄谁的,你查官网就查一个DOS Oracle com加Y。
05:15
那言下之意怎么查呀?有些同学也不会查官网,这个是让我一定很悲剧和很郁闷的一件事情。这个。杨哥呢,因为讲高级部分哈,基本功这个Java一些东西呢,我我不会去讲。那么这个时候的话呢,那么坦白讲哈,那么同学们在大家自学或者前面老师讲的过程当中,100%红开。刘宇老师肯定跟大家说过是吧,这个动作,但是很多同学呢,同学呢只查这个。这个他倒是会查了,但是他不会去翻查Oracle的官网,那么怎么查呀,基本上你要看你查的是哪一个,假设你要查Java虚拟机,那么你就点开跑到这儿去找你相关Java虚拟机的问题,OK,那么大家都知道,那不要看官网,那都用C浏览器,英语四级都过了吧,那么这些是吧,完全变成中文了,看一下你不用去查那些帖子在这儿都有那么好。
06:10
回到我们刚才的什么这个东东,现在我们要解决两个问题,第一个问题已经解决干嘛。也就是说干。XSS这个是代表配置占空间,注意啊,不是堆,是我们运行时候的占空间,明白杨哥一再给我强调,占管运行,多管存储,那么好,我们现在占空间,我们配了128,好,怎么配?讲完了也确实查了当前正在运行的这个程序,Hello GC这个东东。进程编号7324,它的。SS。别名就叫占空间的大小也刚好是128,那么怎么解释这个零呢?第二个问题,零代表初始值,那初始值是多大?那么大家看这是我们的JAVA8这个版本,那么杨哥呢,九这个版本,十这个版本,11这个版本干嘛?12这个版本就你看都给你翻查,那么差不多了,我们。
07:06
就以现在的都差不多,那么90,我们就就就以九把八九啊这些都差不多,那么但XX的大小设置这个线程站的大小,它以字节为单位。那么呢,可以用什么K大小的这些字母呢?KB来限制,或者是G,那么呢,这个默认的值依赖于什么?Depend on,什么东platform是平台。所以说。如果说你0NUX系统是64位的,这个站默认就是1024KB,那么如果是osx的,或者是orac口,其他的大概从九以后什么概念,如果是64位系统就是1024,但是Windows的话,它的默认值依赖于你的虚拟内存是多大,那么好,我们大家看看我们的十一样,那么大家看11它的文档也一样,那么所以说我们现在就会知道这个XX啊。
08:05
XSS啊,它呢就等价你看这个选项极其相似于这么个选项,就是占空间的大小,包括什么我们的八。呢,也一样的,文档内容几乎是什么差不多的,那么大家请看,干嘛也这么回事儿?OK,所以说也是依赖于什么这个平台,那么。所以说我们就要明白默认而言什么概念,就是这个为什么,因为我们一般那些服务啊,都布到什么,呃,这个三维啊,UB图,阿里云的Linux平台默认以现在2019年哈,大家应该正常而言,我觉得只要是生产环境都应该装64位的Linux系统,那么我们可以把它近似的看做多少。1024当然具体情况,那么呢。来看平台好。这个就是我们对于XSXSS参数调整的两个问题。
09:05
第一个问题。它等价于这个也是一个XX类型的双X型参数,那么。它的调节就是用杠XXS第二个初始值是不是零,它表面上是零,零代表它用的就是默认出厂值啊,那么这个时候根据我们查的官网的八九十十一,那么明确的说明了,比方说。比如说以目前最新的JDK12为例。这个选项就等价于我们的这个,那么跟平台有关,那么人家说了默认值是跟平台有关,一般我们可以。的都是生产环境都不到64位的linus系统,那么就是102KB。对于我们的xxx这么一个参数,咱们就给大家复习并介绍到这。
我来说两句