04-JVM参数调优

参考资料(oracle官网):https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BABFAFAE

1. 常用参数

  • -Xms:初始化堆大小,建议设置与-Xmx同样大小

  • -Xmx:最大堆的大小,依据程序稳定运行期活跃数据的大小,建议设置为活跃数据的3·4倍

  • -Xmn:堆年轻代的初始化大小和最大大小;等同于-XX:NewSize和-XX:MaxNewSize建议设置大小占整个堆的1/4·3/8。如果系统是纯IO交互,不涉及大量自建缓存,如网关可适当调大年轻代所占比列

  • -Xss:线程栈的大小,等同于-XX:ThreadStackSize,64位linux下,大小默认1m,建议非特殊需求不要调整

  • -XX:MetaspaceSize:建议与MaxMetaspaceSize一样大小

  • -XX:MaxMetaspaceSize:根据项目启动加载类得的个数设置,通常一个类大小不超过10k

  • -XX:+UseCompressedOops:适用64位JVM,默认开启,不建议调整

  • -XX:+UseCompressedClassPointers:适用64位JVM,默认开启,不建议调整

  • -XX:+HeapDumpOnOutOfMemoryError:建议开启,outOfMemoryError引发异常时转储堆到本地

  • -XX:HeapDumpPath:异常堆存储路径

  • -XX:-UseBiasedLocking:如果你的同步资源或代码一直都是多线程访问的,可开启参数。默认是关闭的

2. 垃圾回收器的选择

2.1 CMS垃圾回收器

  • -XX:+UseConcMarkSweepGC:采用cms垃圾回收器,建议线上使用

  • -XX:UseCMSCompactAtFullCollection:默认是true,处理内存碎片,不建议修改

  • -XX:CMSFullGCsBeforeCompaction:整数值,默认是0.多少次fullgc后进行内存压缩;经验值6-10次

  • -XX:+CMSScavengeBeforeRemark:重新标记前进行一次younggc建议开启

  • -XX:+UseCMSInitiatingOccupancyOnly:建议开启

  • -XX:CMSInitiatingOccupancyFraction:默认是92,经验值70左右

  • -XX:+CMSClassUnloadingEnabled:类得卸载,默认开启,如果比较耗时,可以考虑关闭

2.2 G1垃圾回收器

  • -XX:+UseG1GC:堆大小约为6GB或更大,建议采用G1垃圾回收器

如果当前具有CMS或ParallelOld垃圾收集器运行的应用程序具有以下一个或多个特征,建议切换G1

超过50%的Java堆被实时数据占用。不必要的长时间垃圾收集或压缩暂停(长于0.5到1秒)。

涉及JIT编译项的参数不建议调整。


04-JVM参数调优
https://janycode.github.io/2020/04/15/07_虚拟机/04-JVM参数调优/
作者
Jerry(姜源)
发布于
2020年4月15日
许可协议