JVM参数

选项的分类

Hotspot JVM提供以下三大类选项:

  1. 标准选项:这类选项的功能是很稳定的,在后续版本中也不太会发生变化。运行java或者java -help可以看到所有的标准选项。所有的标准选项都是以-开头,比如-version, -server等。
  2. X选项:比如-Xms。这类选项都是以-X开头,可能由于这个原因它们被称为X选项。运行java -X命令可以看到所有的X选项。这类选项的功能还是很稳定,但官方的说法是它们的行为可能会在后续版本中改变,也有可能不在后续版本中提供了。
  3. XX选项:这类选项是属于实验性,主要是给JVM开发者用于开发和调试JVM的,在后续的版本中行为有可能会变化。

XX选项的语法

  • 如果是布尔类型的选项,它的格式为-XX:+flag或者-XX:-flag,分别表示开启和关闭该选项。
  • 针对非布尔类型的选项,它的格式为-XX:flag=value

内存相关

参数描述
-Xms最小堆内存
-Xmx最大堆内存
-Xss栈容量
-XX:+HeapDumpOnOutOfMemoryError表示在内存出现OOM的时候,把Heap转存(Dump)到文件以便后续分析,文件名通常是java_pid .hprof,其中pid为该程序的进程号。
-XX:HeapDumpPath= :用来指定heap转存文件的存储路径,需要指定的路径下有足够的空间来保存转存文件。-XX:HeapDumpPath=/tmp/heapdump.hprof
-XX:OnOutOfMemoryError用来指定一个可行性程序或者脚本的路径,当发生OOM的时候,去执行这个脚本。-XX:OnOutOfMemoryError =“sh ~/cleanup.sh”
-XX:NewSize新生代的最小值
-XX:MaxNewSize新生代的最大值
-XX:NewRatio用来设置老生代和新生代大小的比例,比如-XX:NewRatio=2表示1/3的Heap是新生代,2/3的Heap是老生代。使用这个选项的好处是新生代的大小也能随着Heap的变化而变化。
MaxDirectMemorySizes本机直接内存最大值

GC日志相关

参数描述
-XX:+PrintGC等同于-verbose:gc 表示打开简化的GC日志,相关输出如下:
[GC 425355K->351685K(506816K), 0.2175300 secs]
[Full GC 500561K->456058K(506816K), 0.6421920 secs]
-XX:+PrintGCDetails这个选项会打印出更多的GC日志,不同的收集器产生的日志会不一样。
-XX:+PrintGCTimeStamps把GC的时间戳显示在GC的日志中,打印GC发生的时间相对于JVM启动的时间
-XX:+PrintGCDateStamps把GC的时间戳显示在GC的日志中,打印出GC发生的具体时间。
-Xloggc: 表示把GC日志写入到一个文件中去,而不是打印到标准输出中。

垃圾收集器相关

参数描述
-XX:+UseSerialGC虚拟机运行在Client模式下的默认值,打开此开关,使用Serial+Serial Old收集器组合
-XX:+UseParNewGC打开此开关,使用ParNew+Serial Old 组合
-XX:+UseConcMarkSweepGC打开此开关,使用ParNew + CMS + Serial Old组合,Serial Old作为CMS出现 Concurrent Mode Failure 失败后的后背收集器
-XX:+UseG1GC打开此开关后,使用G1 收集器
-XX:+UseParallelGC虚拟机运行在Server模式下的默认值,打开此开关后,使用 Parallel Scavenge + Serial Old(PS MarkSweep)组合
-XX:+UseParallelOldGC打开此开关后,使用Parallel Scavenge + Parallel Old的组合
-XX:+SuvivorRatio新生代中,Eden区域与Survivor区域的容量比值,默认为8,代表Eden:Survivor=8:1
-XX:+PretenureSizeThreshold对象直接晋升到老年代的对象大小,设置此参数后,大于此参数的对象将直接分配在老年代
-XX:+MaxTenuringThreshold对象晋升到老年代的年龄(默认为15)。每个对象在坚持过一次Minor GC之后,年龄加1,当超过这个参数值时,就进入老年代
-XX:+UseAdaptiveSizePolicy对台调整Java堆中各个区域的大小以及进入老年代的年龄
-XX:+HandlePromotionFailure是否允许分配担保失败,即老年代的剩余空间不足以应付新生代的整个Eden和Survivor区的所有对象都存活的几段情况
-XX:+ParallelGCThreads设置并行GC时进行内存回收的线程数
-XX:+GCTimeRatioGC时间占总时间的比率,默认值为99,即允许1%的GC时间,仅在使用Parallel Scavenge收集器时生效
-XX:+MaxGCPauseMillis设置GC的最大停顿时间。仅在使用Parallel Scavenge收集器时生效
-XX:+CMSInitiatingOccupancyFraction设置CMS收集器在老年代空间被使用多少后触发垃圾收集。默认值为68%,仅在使用CMS收集器时生效
-XX:+UseCMSCompactAtFullCollection设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片整理。仅在使用CMS收集器时生效
-XX:+CMSfullGCsBeforeCompaction设置CMS收集器在进行若干次垃圾收集后再启动一次内存碎片整理。仅在使用CMS收集器时生效

其他

参数描述
-XX:+PrintCommandLineFlags与-showversion类似
可以让在程序运行前打印出用户手动设置或者JVM自动设置的XX选项
建议加上这个选项以辅助问题诊断
java -XX:+PrintCommandLineFlags -version
不能指定具体的LVMID?
-XX:+PrintFlagsInitial打印出所有XX选项的默认值
-XX:+PrintFlagsFinal打印出XX选项在运行程序时生效的值

参考资料

【Hotspot JVM的常用选项】https://www.zybuluo.com/jewes/note/57352


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值