文章目录
- JVM的参数类型
- 1.标配参数
- 2.x参数
- 3.xx参数(重点)
- (1)Boolean类型(开启/关闭)
- (2)KV设值类型(Key-Value键值对)
- (3)jinfo举例,如何查看当前运行程序的配置
- (4)题外话
- 4.JVM盘点家底查看初始默认值
- 第一种方法:
- 第二种方法:
JVM的参数类型
1.标配参数
从JDK1.0到Java12,一直存在。
-version
-help
java -showversion
2.x参数
-Xint:解释执行
-Xcomp:第一次使用就编译成本地代码
-Xmixed:混合模式(先编译再执行)
3.xx参数(重点)
(1)Boolean类型(开启/关闭)
🌟一般公式:
-XX:+(或者-)某个属性值
+表示开启,-表示关闭
🌟Case:
是否打印GC收集细节?
- -XX:+PrintGCDetails
- -XX:-PrintGCDetails
是否使用串行垃圾回收器?
- -XX:+UseSerialGC
- -XX:-UseSerialGC
🌟如何查看一个正在运行中的java程序,它的某个jvm参数是否开启?具体值是多少?
jps:查看正在运行中的java进程。jps -l 得到进程号。
jinfo:查看正在运行的java进程的各种信息。jinfo -flag PrintGCDetails 进程号。jinfo -flag是标配,后面加的是具体参数和进程号。
(2)KV设值类型(Key-Value键值对)
🌟一般公式:
-XX:属性key = 属性值value
🌟Case:
设置元空间大小?
- -XX: MetaspaceSize=128m
新生代需要经历多少次GC晋升到老年代中的最大阈值? - -XX: MaxTenuringThreshold=15
(3)jinfo举例,如何查看当前运行程序的配置
公式:jindo -flag 配置项 进程编号
进程编号用jps获得
InitialHeapSize 初始化的堆大小
如果想一次性查多个配置项,则:jinfo -flags 进程号
(4)题外话
有-Xms和-Xmx这两个经典参数如何解释(为什么没有+/=,算XX参数还是X参数)?
注:-Xms1024m -Xmx1024m,不需要写+和=。
答:
-Xms 就等价于-XX:InitialHeapSize 初始化的堆内存 (初始化为1/64系统内存)
-Xmx 就等价于-XX:MaxHeapSize 堆内存的最大值 (初始化为1/4系统内存)
-Xms和-Xmx只是别名
4.JVM盘点家底查看初始默认值
第一种方法:
jinfo -flag 具体参数 进程编号
jinfo -flags 进程编号
第二种方法:
-XX:PrintFlagsInitial
主要是查看初始默认值
公式:
- java -XX:+PrintFlagsInitial -version
- java -XX:+PrintFlagsInitial
-XX:PrintFlagsFinal
主要是查看修改更新
公式:
- java -XX:+PrintFlagsFinal -version
- java -XX:+PrintFlagsFinal
:= 表示被 人为/JVM 修改过的值
= 表示是默认的
-XX:+PrintCommandLineFlags
命令行的,看程序使用的默认JVM参数
比如最后一个参数表示,默认的垃圾回收机制是并行GC。