jvm参数总结

Posted set-cookie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jvm参数总结相关的知识,希望对你有一定的参考价值。

之前一直对jvm参数都是现学现用,对有些地方没有总结,比如-XX 和 -X有什么区别,无意中看到oracle的官网对于jvm参数的介绍,下面做个简单的总结和翻译。

首先献上oracle官方链接:

  1. http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
  2. https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

1 jvm参数类型

1.1 标准参数(保证在所有的jvm上都实现)

不是以-X和-XX开头的参数属于标准参数,例如-Dproperty=value -jar filename -client 等

1.2 非标准参数(不保证在所有的jvm上都实现)

非标准参数分为以-X开头的和以-XX开头的

  • 以-X开头的参数是非标准参数,有可能不在release note中通知就改变
  • 以-XX开头的参数是不稳定的,可能不通知就改变

非标准参数

  • 对于boolean类型,-XX:+<选项> 表示打开选项;--XX:-<选项> 表示关闭掉选项
  • 对于数值类型,可用-XX:<选项>=<值> 表示;值默认单位是字节,也可用单位有‘k’或者‘K’、‘m’或者‘M’、‘g’或者‘G’,例如32k表示32768
  • 对于String类型,可用-XX:<选项>=<值>,通常用来指定一个文件、路径或者命令

对于一些参数的默认值可用参考上面列出的oracle的官网

2 常用参数

参数 说明 备注
-Dproperty=value 设置系统变量,等号两边没有空格,如果value有空格的话,需要用双 引号括起来
-X 显示所有的-X 选项
-Xmssize 设置堆的最小值 值必须是1024的倍数并且大于1M
-Xmxsize 设置堆最大值 值必须值1024的倍数并且大于2M,一般情况下-Xmx和-Xms设置为一样大的值,和-XX:MaxHeapSize=size 意义相同
-Xxssize 设置线程栈大小 默认值和jvm所在的平台有关系,该选项和-XX:ThreadStackSize 意义相同
-XX:NewRatio=ratio 设置新生代和老年代的比例,默认大小比例是2
-Xmnsize 设置年轻代大小,最大值和最小值都是size 值默认单位是字节,也可用单位有‘k’或者‘K’、‘m’或者‘M’、‘g’或者‘G’ 例如-Xmn256m
-XX:NewSize=size 设置新生代初始大小
-XX:MaxNewSize=size 设置新生代最大值

3 其他

-Xmnsize、-XX:NewRatio=ratio、-XX:NewSize=size/-XX:MaxNewSize=size 三个参数都会影响年轻代的大小,那么在混合使用的情况下,优先级是什么呢?

  1. 最高优先级 -XX:NewSize=size/-XX:MaxNewSize=size
  2. 中优先级:-Xmnsize(-Xmnsize 等效 -XX:NewSize=size -XX:MaxNewSize=size)
  3. 低优先级: -XX:NewRatio=ratio

推荐使用-Xmnsize参数,原因是这个参数简洁,相当于一次设定-XX:NewSize=size/-XX:MaxNewSize=size,而且两者相等,适用于生产环境。-Xmnsize 配合 -Xmssize/-Xmxsize,即可将堆内存布局完成

4 参考

http://www.jiucaiyuan.net/m/?post=56
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html



以上是关于jvm参数总结的主要内容,如果未能解决你的问题,请参考以下文章

07JVM参数调优-05最后总结

「JVM」调优参数总结

JVM参数调优详解

JVM参数调优详解

JVM参数配置总结

JVM 常用参数总结