关于 JVM 参数优化步骤
1.上线前:先合理评估自己系统的压力,合理设置参数
2.上线后:通过 jstat 命令监控显示系统的 eden 区增长速度,ygc 频率和耗时,老年代增长频率,耗时,然后优化参数
关于 GC 问题定位排查
1.通过 jstat 分析新生代、老年代对象增速,耗时和频率
2.分析代码逻辑,也可以转存堆内存快照,使用 MAT 工具进行分析.
OOM 分析解决
1.看是那块内存抛出异常,比如堆、栈、Metaspace 区域
2.如果是栈内存溢出的话,通过日志,定位栈内存溢出的地方,然后分析代码. 如果是堆内存溢出,则可以转存堆内存快照,通过 MAT 工具进行分析,看那些对象占用了较大内存,调用链如何等. 如果是第三方框架抛出的异常,则需要深入分析第三方框架的实现细节,来最终解决问题.
3.分析代码逻辑.
4.也可以使用 top 命令看下内存,cpu 使用情况来辅助定位问题.