JVM常用参数
类型 | 描述 | ||
---|---|---|---|
-Xint | X型 | 解释执行 | |
-Xcomp | 编译执行,即第一次使用就先编译成本地代码再执行 | ||
-Xmixed | 混合模式(默认) | ||
-XX:+属性值 | XX型 | boolean型 | 表示开启该属性 |
-XX:-属性值 | 表示关闭该属性 | ||
-XX:属性key=值value | kv设值型 | 给jvm属性设置具体的值 |
参数 | 描述 |
---|---|
-XX:PrintFlagsInitial | 查看所有参数的默认初始值 |
-XX:PrintFlagsFinal | 查看所有的参数的最终值(可能会存在修改,不再是初始值) |
-Xms | 初始堆空间内存(默认为物理内存的1/64) |
-Xmx | 最大堆空间内存(默认为物理内存的1/4) |
-Xmn | 设置新生代大小(初始值及最大值) |
-XX:NewRatio | 配置新生代与老年代在堆结构的占比 |
-XX:SurvivorRatio | 设置新生代中Eden和S0/S1空间的比例 |
-XX:MaxTenuringThreshold | 设置新生代垃圾的最大年龄(默认15) |
-XX:+PrintGC | 打印gc简要信息,或者 -verbose:gc |
-XX:+PrintGCDetails | 输出详细的GC处理日志 |
-XX:HandlePromotionFailure | 是否设置空间分配担保 |
jps | 查看当前运行中的进程 |
jinfo -flag SurvivorRatio PID | 查看新生代中Eden和S0/S1空间的比例 |
XX型
boolean型
- -XX:+PrintGCDetails
打印GC详细信息。也可关闭 -XX:-PrintGCDetails
- -XX:+PrintFlagsInitial
打印JVM的所有参数和值。也可直接通过在命令行输入 java -XX:+PrintFlagsInitial 直接查看
- -XX:+PrintFlagsFinal
会将更改后的JVM参数标记出来(在等号前面加:),也可直接通过在命令行输入 java -XX:+PrintFlagsFinal 直接查看。如下图
- -XX:+PrintCommandLineFlags
仅打印JVM常见参数。同样也可在命令行直接使用: Java -XX:+PrintCommandLineFlags
kv设值型
- -XX:+Use
指定使用什么GC,例如使用G1 ‐XX:+UseG1GC
- 配置内存大小
- -Xms:堆初始内存
如 -Xms128m 。默认为物理内存的1/64,等价于 -XX:initialHeapSize。-X 是jvm的运行参数,ms 是memory start。
- -Xmx:堆最大内存
超过则OOM。默认为物理内存的1/4,等价于 -XX:MaxHeapSize,建议与 -Xms的大小设置一致,避免频繁调整堆大小带来的性能开销,推荐为节点总内存的70%-80%;
- -Xss:单个线程栈的大小
一般默认为512~1024K(根据JDK版本,和系统平台 确定)。等价于-XX:ThresholdStackSize
- -Xmn:新生代内存大小,一般不调
- -XX:MetaspaceSize 设置元空间的大小
-XX:MetaspaceSize=512m 设置元空间的大小为512m。
注意:虽然元空间属于物理内存,理论上仅受物理内存大小限制。但是,从实际查询中看出,JVM给了个元空间的默认值20m,当使用超过这个值就会报OOM,所以,根据实际情况可以适当将其设置得更大些,比如512m
- 配置内存比例
- -XX:SurvivorRatio
设置新生代中 eden区和s0/s1区的比例。
默认:-XX:SurvivorRatio=8,即Eden:s0:s1=8:1:1
特别说明:串行GC器的比例是8:1:1,并行GC器的比例为6:1:1
- -XX:NewRatio
配置 young区 和 old区 在堆结构中的占比。NewRatio的值就是设置old区的占比,young区始终占1
默认:-XX:NewRatio=2,即,young区 : old区 = 1:2。一般不用去调整
- -XX:MaxTenuringThreshold
设置s区 提升到 old区 的 年龄限制,默认值是15,jdk8取值范围规定为(0-15)