一、首先让Jvm中有一个线程,我们此刻用的一个sleep
二、在terminal中输入jps -l 查看运行程序的端口号为30284
三、查看XX参数是否开启jinfo -flag(jinfo -flags默认开启的所有参数配置,类似于模糊查询)(—XX:-所以他为没开启)
四、开启XX参数
五、重新启动程序(端口28852)
六、查看XX参数
第二种类型:-XX:Key=VALUE
这个命令也是盘点家底的命令,只是只有部分的参数,但最重要的是他可以看出使用那种垃圾回收算法,jdk8默认使用并行GC
这两个个命令非常非常重要:
(一、查看jvm的出厂默认参数):java -XX:+PrintFlagsInitial(等同于java -XX:+PrintFlagsInitial -version)
(二、查看修改更新后的参数):java -XX:+PrintFlagsFinal -version
请注意:=是说明它是初始值,未改动过。
:=是说明它的值有改动(人为修改或者是JVM自动修改的,比如如下的初始堆内存可能随着你加内存条它的大小发生了改变
运行时直接修改参数
通过java -XX:+PrintCommandLineFlags -version可以直观的看出来使用的是什么垃圾收集算法(这个是并行GC)
Xms、Xmx、Xss
这有个奇怪的地方,你会发现-Xss查询值为0,而当你设置了大小为128k后又变成了128,为什么初始为0,按理栈空间再小也会有值,查了官方发现他的值是和平台有关的,如果为0一般理解它就是初始值
1、-XX:+PrintGCDetails(程序正常时显示的是年轻代,老年代,元空间)
2、当我们故意把堆空间、栈空间调小,让程序发生异常再看;
-Xms10m -Xmx10m -XX:+PrintGCDetails
(程序里我们设定一个大数组对象50m byte[] a=new byte[50*1024*1024])
CMS是并发收集