JVM调优-考虑方向
1.、为什么要优化
• 防止出现OOM
• 解决OOM
• 减少Full GC出现的频率
2、
• 上线前
• 项目运行阶段
• 线上出现OOM
3、
• 运行日志
• 异常堆栈
• GC日志
• 线程快照
• 堆转储快照
4、
• 合理地编写代码
• 充分并合理的使用硬件资源
• 合理地进行JVM调优
5、
• GC频繁
• cpu load过高
• OOM
• 内存泄露
• 死锁
• 程序响应时间较长
• 打印GC日志,通过GCviewer或者 http://gceasy.io 来分析异常信息 • 灵活运用命令行工具、jstack、jmap、jinfo等 • dump出堆文件,使用内存分析工具分析文件 • 使用阿里Arthas、jconsole、JVisualVM来实时查看JVM状态 • jstack查看堆栈信息
第3步:性能调优
• 适当增加内存,根据业务背景选择垃圾回收器
• 优化代码,控制内存使用
• 增加机器,分散节点压力
• 合理设置线程池线程数量
• 使用中间件提高程序效率,比如缓存、消息队列等
• 其他……