一、JVM的参数类型:
1、标配参数:
1
2
java -version
java -help
X参数(了解)
-Xmixed 混合模式(先编译后执行)
-Xint 解释执行
-Xcomp 第一次使用就编译成本地代码
3、XX参数:
Boolean类型:公式:-XX:+ (+表示开启 -表示关闭)是否打印GC收集细节 -XX:+PrintGCDetails -XX:-PrintGCDetails是否使用串行垃圾回收器 -XX:+UseSerialGC -XX:-UseSerialGC问题:如何查看一个正在运行中的java程序,它的某个JVM参数是否开启?
代码验证:
public class HelloGC {
public static void main(String[] args) throws InterruptedException {
System.out.println("*****helloGC");
Thread.sleep(Integer.MAX_VALUE);
}
}
1
2
3
jps -l
jinfo -flag PrintGCDetails 10729
结果:-XX:+PrintGCDetails,表示开启打印 GC 收集细节(默认不开启
jps -l 表示查看java运行的进程号 jinfo -flag PrintGCDetails pid 表示查看JVM是否配置PrintGCDetails参数 -XX:-PrintGCDetails 减号表示没有配置PrintGCDetails参数
配置JVM -XX:+PrintGCDetails参数
KV设值类型:公式:-XX:属性key=属性值value=
1
2
3
jps -l
jinfo -flag MetaspaceSize 6932 --若没有配置参数,则查看系统参数默认值
结果:-XX:MetaspaceSize=21807104
1
2
jinfo -flag 配置项 进程编号
jinfo -flags 进程编号
jinfo -flag 配置项 进程编号
三、两个经典参数:-Xms1024m -Xmx1024m谈谈你的理解
1
2
-Xms等价于 -XX:initialHeapSize
-Xmx等价于 -XX:MaxHeapSize
二、如何查看JVM系统参数的默认值
1
2
3
java -XX:+PrintFlagsInitial --查看出厂默认值
java -XX:+PrintFlagsFinal --查看修改更新 (= 没有修改过 := 人为修改过)
java -XX:+PrintFlagsFinal -XX:MetaspaceSize=512m 查看系统参数,并修改元空间大小
1
java -XX:+PrintCommandLineFlags -version --打印命令行参数(可以看默认垃圾回收器)
结果:-XX:InitialHeapSize=261777856 -XX:MaxHeapSize=4188445696 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)