java面试之JVM参数调优详解

java面试之JVM参数调优详解_第1张图片

java面试之JVM参数调优详解_第2张图片

java面试之JVM参数调优详解_第3张图片

java面试之JVM参数调优详解_第4张图片

 

一、首先让Jvm中有一个线程,我们此刻用的一个sleep

java面试之JVM参数调优详解_第5张图片

二、在terminal中输入jps -l 查看运行程序的端口号为30284

java面试之JVM参数调优详解_第6张图片

三、查看XX参数是否开启jinfo -flag(jinfo -flags默认开启的所有参数配置,类似于模糊查询)(—XX:-所以他为没开启)

java面试之JVM参数调优详解_第7张图片

四、开启XX参数

java面试之JVM参数调优详解_第8张图片

五、重新启动程序(端口28852)

java面试之JVM参数调优详解_第9张图片

六、查看XX参数

第二种类型:-XX:Key=VALUE

java面试之JVM参数调优详解_第10张图片

java面试之JVM参数调优详解_第11张图片

java面试之JVM参数调优详解_第12张图片

java面试之JVM参数调优详解_第13张图片

这个命令也是盘点家底的命令,只是只有部分的参数,但最重要的是他可以看出使用那种垃圾回收算法,jdk8默认使用并行GC

这两个个命令非常非常重要:

(一、查看jvm的出厂默认参数):java -XX:+PrintFlagsInitial(等同于java -XX:+PrintFlagsInitial -version)

(二、查看修改更新后的参数):java -XX:+PrintFlagsFinal  -version

请注意:=是说明它是初始值,未改动过。

              :=是说明它的值有改动(人为修改或者是JVM自动修改的,比如如下的初始堆内存可能随着你加内存条它的大小发生了改变

运行时直接修改参数

通过java -XX:+PrintCommandLineFlags -version可以直观的看出来使用的是什么垃圾收集算法(这个是并行GC)

java面试之JVM参数调优详解_第14张图片

Xms、Xmx、Xss

java面试之JVM参数调优详解_第15张图片

java面试之JVM参数调优详解_第16张图片

java面试之JVM参数调优详解_第17张图片

 

这有个奇怪的地方,你会发现-Xss查询值为0,而当你设置了大小为128k后又变成了128,为什么初始为0,按理栈空间再小也会有值,查了官方发现他的值是和平台有关的,如果为0一般理解它就是初始值

java面试之JVM参数调优详解_第18张图片

java面试之JVM参数调优详解_第19张图片

java面试之JVM参数调优详解_第20张图片

java面试之JVM参数调优详解_第21张图片

1、-XX:+PrintGCDetails(程序正常时显示的是年轻代,老年代,元空间)

java面试之JVM参数调优详解_第22张图片

2、当我们故意把堆空间、栈空间调小,让程序发生异常再看;

-Xms10m -Xmx10m -XX:+PrintGCDetails

(程序里我们设定一个大数组对象50m   byte[]  a=new byte[50*1024*1024])

java面试之JVM参数调优详解_第23张图片

java面试之JVM参数调优详解_第24张图片

java面试之JVM参数调优详解_第25张图片

CMS是并发收集

java面试之JVM参数调优详解_第26张图片

你可能感兴趣的:(jvm)