闲言少叙,时间紧迫。
文章目录
JVM的参数类型:
1、标配参数 -version、-help、java -showversion 等
2、X参数(了解)
3、XX参数
(1)- Boolean类型
公式: -XX:+ 或者 - 某个属性值
+表示开启
-表示关闭
先来学习一下如果查看一个正在运行中的java程序,查看他的某个jvm参数是否开启?具体值是多少?
jps -l
jinfo -flag 某个属性 进程编号
以查看是否开启打印GC日志为例
可以看到 -PrintGCDetails 表示此时并未开启打印GC日志
现在我们将其开启。
再来看一遍
了解?yes~
再提一点,是否串行垃圾回收器
-XX:-UseSerialGC、-XX:+UseSerialGC
(2)-KV设值类型
公式:-XX:(属性) key=(属性值) value
先以MetaspaceSize 为例:
先查看元空间大小为默认为多少
第一步依旧是先查出进程编号
jps -l
第二步:
然后我们再来重新设值
再以MaxTenuringThreshold(young区的对象活过多少次之后才能进入老年区)为例
还是先来看看默认值
可以看到默认值为15
步骤跟上面一样,就不演示了。
如何来查看当前运行程序的配置信息
上面其实已经用到了
1、jinfo -flag 属性 进程编号
2、jinfo -flags 进程编号
为了这个演示费了九牛二虎之力。
查阅之后发现应该是jdk版本的问题,所以下载配置了jdk12之后,重启idea,成功运行。
坑题
-Xms 和 -Xmx 属于哪种类型?
只是因为这个常用,所以为了便捷使用这样写。即这两个参数属于-XX
JVM盘点查看默认参数
1、查看初始默认(只截取了一小部分)
java -XX:+PrintFlagsInitial
2、主要查看修改更新
java -XX:+PrintFlagsFinal -version
大致相同于java -XX:+PrintFlagsInitial
这一点我们需要注意;
:=和: 有什么区别呢?
无: 就是没有被改过的初始值
如果有:是jvm加载时或者人为修改过。
这样能在启动程序中修改值,能够很好的看出:=和=的区别
自己来搞一遍
来试试修改一个MetaspaceSize
java -XX:+PrintFlagsFinal -XX:MetaspaceSize=512m Main
看到了吗,从 = 变为 :=
好,继续。
3、接下来看如何打印命令行参数
java -XX:+PrintCommandLineFlags -version
可以看出java8 默认的垃圾回收器 是并行gc。