JVM调优

43 阅读1分钟

调优时机

  • 堆内存(老年代)持续上涨,达到设置的最大内存值
  • FUll GC 次数频繁
  • GC停顿时间过长(超过1秒)
  • 应用出现OOM等内存异常
  • 应用中有使用本地缓存,且占用大量内存
  • 系统吞吐量和响应性能不高或下降

调优原则

  1. 多数的java应用不需要在服务器上进行JVM优化
  2. 多数导致GC问题的java应用,都不是因为我们参数设置错误,而是代码问题
  3. 在应用上线前,先考虑机器JVM参数设置到最优
  4. 减少创建对象的数量
  5. 减少使用全局变量和大对象
  6. JVM优化,是到最后不得已才采用的手段
  7. 在实际使用中,分析GC情况优化代码比优化JVM参数更好

调优目标

  1. GC低停顿
  2. GC低频率
  3. 低内存占用
  4. 高吞吐量

调优步骤

  1. 分析GC日志及dump文件,判断是否需要优化,确定瓶颈问题
  2. 确定JVM调优量化目标
  3. 确定JVM调优参数(根据历史参数来调整)
  4. 调优一台服务器,对比观察调优前后的差异
  5. 不断分析和调整,直到找到合适的JVM参数配置
  6. 找到最合适的参数,将这些参数应用到所有服务器,并进行后续跟踪