JVM的参数的类型:
1、标配参数:Java -version ;Java -help
2、X参数(了解)
- -Xint 解释执行
- -Xcomp 第一次使用就编译成本地代码
- -Xmixed 混合模式
3、XX参数
1、Boolean类型:
- 格式:-XX:+或者-某个属性者(+表示开启,-表示关闭)
2、KV设置类型
- 格式:-XX:属性key=属性值value
- 如:-XX:MetaspaceSize=128m
- -XX:MaxTenuringThreshold=15
-Xms 和-Xmx是属于XX参数
- -Xms等价于-XX:InitialHeapSize
- -Xmx等价于-XX:MaxHeapSize
查看JVM默认值
- -XX:+PrintFlagsInitial
- -XX:+PrintFlagsFinal :=是改过的参数,或者jvm加载的时候改的参数
- -XX:+PrintCommandLineFlags 查看垃圾回收器
下面是一些参数
1、-Xss:
设置单个线程栈的大小,一半默认为512k~1024k ;等价于-XX:ThreadStackSize
2、-Xmn 设置年轻代的大小
3、-XX:MetaspaceSize
设置元空间大小(原空间的本质和永久代类似,都是对jvm规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制)
4、-XX:+PrintGCDetails 输出详细的GC收集日志信息
[PSYoungGen: 919K->512K(2560K)] 919K->520K(9728K), 0.0024482 secs]下图是对这个的解析
[ParOldGen: 402K->390K(7168K)] 402K->390K(9728K), [Metaspace: 2663K->2663K(1056768K)], 0.0032763 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 把下面的永久代换成元空间
5、-XX:SurvivorRatio
设置新生代中eden和S0/S1空间的比例
默认-XX:SurvivorRatio=8,Eden:S0:S1=8:1:1
假如-XX:SurvivorRatio=4,Eden:S0:S1=4:1:1
SurvivorRatio值就是设置eden区的比例占多少,S0/S1相同。
6、-XX:NewRatio
配置年轻代与老年代在堆结构的占比
默认-XX:NewRatio=2新生代占1,老年代占2,年轻代占整个堆的1/3
假如-XX:NewRatio=4新生代占1,老年代占4,年轻代占整个堆的1/5
NewRatio值就是设置老年代的占比,剩下的1给新生代
7、-XX:MaxTenuringThreshold
- 设置垃圾的最大年龄