调优时机
- 堆内存(老年代)持续上涨,达到设置的最大内存值
- FUll GC 次数频繁
- GC停顿时间过长(超过1秒)
- 应用出现OOM等内存异常
- 应用中有使用本地缓存,且占用大量内存
- 系统吞吐量和响应性能不高或下降
调优原则
- 多数的java应用不需要在服务器上进行JVM优化
- 多数导致GC问题的java应用,都不是因为我们参数设置错误,而是代码问题
- 在应用上线前,先考虑机器JVM参数设置到最优
- 减少创建对象的数量
- 减少使用全局变量和大对象
- JVM优化,是到最后不得已才采用的手段
- 在实际使用中,分析GC情况优化代码比优化JVM参数更好
调优目标
- GC低停顿
- GC低频率
- 低内存占用
- 高吞吐量
调优步骤
- 分析GC日志及dump文件,判断是否需要优化,确定瓶颈问题
- 确定JVM调优量化目标
- 确定JVM调优参数(根据历史参数来调整)
- 调优一台服务器,对比观察调优前后的差异
- 不断分析和调整,直到找到合适的JVM参数配置
- 找到最合适的参数,将这些参数应用到所有服务器,并进行后续跟踪