GC调优思路
调优一定是针对特定场景、特定目标做的事情。
GC调优来说,首先就需要清除调优目标是什么?
从性能角度看,通常关注三个方面,内存占用(footprint)、延时(latency)和吞吐量(throughput),大多数情况调优会侧重于其中一个或者两个方面的目标,很少可以兼顾三个角度)。
除了以上通常三方面,也可能需要考虑其他GC场景,如,OOM也可能与不合理的GC相关参数有关;或者,应用启动速度方面的需求。
调优思路:
- 理解应用需求和问题,确定调优目标。假设,应用哦偶尔出现性能抖动,出现较长时间服务停顿。评估用户可以接受的响应时间和业务量,将目标简化为,希望GC暂停尽量控制在200ms内,并且保证一定标准的吞吐量
- 掌握JVM和GC状态,定位具体问题,确定真的有GC调优的必要。通过工具jstat查看GC等相关状态,可以开启GC日志,或者是利用操作系统诊断工具等。例如,通过追踪GC日志,可以查找是不是GC在特定时间发生了长时间的暂停,进而导致了应用相应不及时。
- 考虑GC的类型是否符合应用的特征。如果符合,考虑是哪个阶段GC存在问题,若不符合,应切换到那种模式?
- 通过分析确定需调整的参数或者硬件配置
- 验证是否达到调优目标,达到则结束,未达到,则重复分析,调优,验证的过程。
GC Stop-The-World
相关文章: