JVM调优步骤

JVM调优主要调整两个指标:

  • 停顿时间:垃圾回收器gc中断应用执行的时间。 -XX:MaxGCPauseMillis
  • 吞吐量:垃圾收集的时间和总时间的占比:1/(1+n),吞吐量为1-1/(1+n)。 -XX:GCTimeRatio=n

垃圾回收器选择:

  • 优先调整堆大小让服务器自己选择
  • 如果内存小于100m,使用串行收集器
  • 如果是单核,并且没有时间停顿要求,选择串行或者JVM自己选择
  • 如果允许停顿时间超过1秒,选择并行或者JVM自己选择
  • 如果相应时间最重要,并且不能超过1秒,使用并发收集器
  • 如果机器配置高,官方推荐G1,性能高

调优步骤

  • 打印分析GC日志
  • 参数:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc.log
  • 分析日志里面的关键性指标:吞吐量、最大停顿、平均停顿、YoungGC次数、FullGC次数
  • 分析GC原因,调优JVM参数

GC常用参数

  • -Xss:每个线程的栈大小
  • -Xms:初始堆大小,默认物流内存的1/64
  • -Xmx:最大堆大小,默认物理内存的1/4
  • -Xmn:新生代大小
  • -XX:NewSize:新生代初始大小
  • -XX:NewRatio:默认2,表示新生代占老年代的1/2,占整个内存的1/3
  • -XX:SurvivorRatio:默认8,表示一个survivor区占用1/8的Eden内存,1/10的新生代内存
  • -XX:MetaspaceSize:设置元空间大小
  • -XX:MaxMetaspaceSize:设置元空间最大允许大小,默认不受限制,JVM Metaspace会进行动态扩展

你可能感兴趣的:(java)