这里只介绍常用的参数
JVM常用参数
Boolean类型
-xx:+或者-某个属性值
+表示开启
-表示关闭
代码演示
public class TestGC {
public static void main(String[] args) {
System.out.println("********************");
try {
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
运行起来,试验就在windows运行,也可以在liunx下运行。这里为了方便直接在IDEA里点Terminal来演示
下面我们来开启这个参数步骤如图
从新运行查看
KV设值类型
-XX:属性key=属性值value
查看MetaspaceSize空间是多少如图:
我们设置下改为1024M
cls清屏下
如果查看所有可以使用
jinfo -flags 进程号
查看初始化参数
java -XX:+PrintFlagsInitial
没有冒号是没有修改过,带有冒号是人为修改或者JVM加重时修改过。
JVM常用参数介绍
-Xms | 等价于-XX:InitialHeapSize 初始化大小内存,默认为物理内存1/64 |
---|---|
-Xmx | 等价于-XX:MaxHeapSize 最大分配内存,默认为物理内存1/4 |
-Xss | 等价于-XX:ThreadStackSize 设置单个线程栈的大小,一般默认为512k~1024k |
-XX:MetaspaceSize | 设置元空间大小(元空间本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:【元空间并不在虚拟机中,而是使用本地内存。】因此默认情况下,元空间的大小仅受本地内存限制) |
-XX:+PrintGCDetails | 输出详细GC收集日志信息 |
-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相同 |
-XX:NewRatio | 配置年轻代与老年代在堆结构的占比,默认-XX:NewRatio=2新生代占1,老年代占2,年轻代占整个堆的1/3假如-XX:NewRatio=4新生代占1,老年代占4,年轻代占整个堆的1/5 NewRatio值就是设置老年代的占比,剩下的1给新生代 |
-XX:MaxTenuringThreshold | 设置垃圾最大年龄 |
查看默认进入老年带年龄:
jinfo -flag MaxTenuringThreshold 进程编号