闲言少叙,时间紧迫。


文章目录

  • 1、标配参数 -version、-help、java -showversion 等
  • 2、X参数(了解)
  • 3、==XX参数==
  • (1)- Boolean类型
  • (2)-KV设值类型
  • 如何来查看当前运行程序的配置信息
  • 坑题
  • JVM盘点查看默认参数
  • 1、查看初始默认(只截取了一小部分)
  • 2、主要查看修改更新



JVM的参数类型:

1、标配参数 -version、-help、java -showversion 等

java设置入参默认值 java 默认参数_Java函函数中的默认参数

2、X参数(了解)

java设置入参默认值 java 默认参数_jvm_02

3、XX参数

(1)- Boolean类型

公式: -XX:+ 或者 - 某个属性值

+表示开启

-表示关闭

先来学习一下如果查看一个正在运行中的java程序,查看他的某个jvm参数是否开启?具体值是多少?

jps -l

jinfo -flag 某个属性 进程编号

以查看是否开启打印GC日志为例

java设置入参默认值 java 默认参数_jvm_03


可以看到 -PrintGCDetails 表示此时并未开启打印GC日志

现在我们将其开启。

java设置入参默认值 java 默认参数_java_04


再来看一遍

java设置入参默认值 java 默认参数_Java函函数中的默认参数_05


了解?yes~

再提一点,是否串行垃圾回收器

-XX:-UseSerialGC、-XX:+UseSerialGC

(2)-KV设值类型

公式:-XX:(属性) key=(属性值) value

先以MetaspaceSize 为例:

先查看元空间大小为默认为多少

第一步依旧是先查出进程编号

jps -l

第二步:

java设置入参默认值 java 默认参数_jvm_06


然后我们再来重新设值

java设置入参默认值 java 默认参数_Java函函数中的默认参数_07


java设置入参默认值 java 默认参数_Java函函数中的默认参数_08


再以MaxTenuringThreshold(young区的对象活过多少次之后才能进入老年区)为例

还是先来看看默认值

java设置入参默认值 java 默认参数_Java函函数中的默认参数_09


可以看到默认值为15

步骤跟上面一样,就不演示了。

如何来查看当前运行程序的配置信息

上面其实已经用到了

1、jinfo -flag 属性 进程编号

2、jinfo -flags 进程编号

为了这个演示费了九牛二虎之力。

查阅之后发现应该是jdk版本的问题,所以下载配置了jdk12之后,重启idea,成功运行。

java设置入参默认值 java 默认参数_值类型_10

坑题

-Xms 和 -Xmx 属于哪种类型?

java设置入参默认值 java 默认参数_jvm_11


只是因为这个常用,所以为了便捷使用这样写。即这两个参数属于-XX

JVM盘点查看默认参数

1、查看初始默认(只截取了一小部分)

java -XX:+PrintFlagsInitial

java设置入参默认值 java 默认参数_JVM_12

2、主要查看修改更新

java -XX:+PrintFlagsFinal -version

大致相同于java -XX:+PrintFlagsInitial

java设置入参默认值 java 默认参数_JVM_13


这一点我们需要注意;

:=和: 有什么区别呢?

无: 就是没有被改过的初始值

如果有:是jvm加载时或者人为修改过。

java设置入参默认值 java 默认参数_JVM_14


这样能在启动程序中修改值,能够很好的看出:=和=的区别

java设置入参默认值 java 默认参数_jvm_15


自己来搞一遍

java设置入参默认值 java 默认参数_java_16


来试试修改一个MetaspaceSize

java设置入参默认值 java 默认参数_值类型_17


java -XX:+PrintFlagsFinal -XX:MetaspaceSize=512m Main

java设置入参默认值 java 默认参数_jvm_18


看到了吗,从 = 变为 :=好,继续。

3、接下来看如何打印命令行参数

java -XX:+PrintCommandLineFlags -version

java设置入参默认值 java 默认参数_java_19


可以看出java8 默认的垃圾回收器 是并行gc。