JVM调优常用参数

最重要的一个参数

  • -XX:+PrintFlagsFinal 可以列出所有的调优参数
# 假如我们要查G1相关参数只需要执行下面这个命令
java -XX:+PrintFlagsFinal | grep G1

JVM调优常用参数_第1张图片

通用参数

  • -Xmn:设置年轻代大小(eg:-Xmn2G)
  • -Xms:最小堆大小(eg: -Xms4G)
  • -Xmx:最大堆大小(最大堆和最小堆建议设置一样)
  • -Xss:栈大小(eg:-Xss1024K)
  • -XX:+UseTLAB:设置开启线程本地分配,默认是开启的 不建议动
  • -XX:+PrintTLAB:打印TLAB的使用情况
  • -XX:+TLABSize:设置TLAB的大小
  • -XX:+DisableExplicitGC:让手动调用System.gc();不生效
  • -XX:+PrintGC:打印出GC信息
  • -XX:+PrintGCDetails:打印出GC的详细信息
  • -XX:+PrintHeapAtGC:打印出GC的堆栈情况
  • -XX:+PrintGCTimeStamps:打印出发生GC的时间
  • -XX:+PrintGCApplicationConcurrentTime:打印应用程序时间
  • -XX:+PrintGCApplicationStoppedTime:打印出GC的暂停时长
  • -XX:MaxTenuringThreshold 升代年龄,最大值15
  • -XX:+PrintReferenceGC:(重要性低) 记录回收了多少种不同引用类型的引用
  • -verbose:class :类加载详细过程
  • -XX:+PrintVMOptions:打印虚拟机接收到命令行显示参数
  • -Xloggc:opt/log/gc.log:生成GC日志文件 (eg:最多生成5个日志文件 -Xloggc:/opt/xxx/logs/xxx-xxx-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause)
  • -XX:PreBlockSpin:升级重量级锁的自旋次数(不建议动)

Parallel常用参数

  • -XX:SurvivorRatio: eden区和survivor的比例(不建议动)
  • -XX:PreTenureSizeThreshold:直接进入老年代大对象到底多大
  • -XX:+ParallelGCThreads:并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同
  • -XX:+UseAdaptiveSizePolicy:自动选择各区大小比例

CMS常用参数

  • -XX:+UseConcMarkSweepGC:设置GC为cms
  • -XX:ParallelCMSThreads:CMS线程数量,不建议全占了,要留一些给程序自身
  • -XX:CMSInitiatingOccupancyFraction:使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生SerialOld卡顿,应该调小,(频繁CMS回收)
  • -XX:+UseCMSCompactAtFullCollection:在FGC时进行压缩
  • -XX:CMSFullGCsBeforeCompaction:多少次FGC之后进行压缩(对CMS内存碎片问题进行优化)
  • -XX:+CMSClassUnloadingEnabled:回收方法区
  • -XX:CMSInitiatingPermOccupancyFraction:达到什么比例时进行Perm回收
  • GCTimeRatio:设置GC时间占用程序运行时间的百分比
  • -XX:MaxGCPauseMillis:停顿时间,是一个建议时间,GC会尝试用各种手段达到这个时间,比如减小年轻代

G1常用参数

  • -XX:+UseG1GC:使用G1作为垃圾回收器
  • -XX:MaxGCPauseMillis: 建议值,G1会尝试调整Young区的块数来达到这个值
  • -XX:GCPauseIntervalMillis :GC的间隔时间
  • -XX:+G1HeapRegionSize :分区大小,建议逐渐增大该值,1 2 4 8 16 32。 随着size增加,垃圾的存活时间更长,GC间隔更长,但每次GC的时间也会更长 ZGC做了改进(动态区块大小)
  • G1NewSizePercent :新生代最小比例,默认为5%
  • G1MaxNewSizePercent: 新生代最大比例,默认为60%
  • GCTimeRatio:GC时间建议比例,G1会根据这个值调整堆空间
  • ConcGCThreads:线程数量
  • InitiatingHeapOccupancyPercent:启动G1的堆空间占用多少比例触发MixedGC默认45

你可能感兴趣的:(jvm)