关于JVM调优的思路

1. 上线前

总堆内存大小

一般设置为总内存大小一半左右

-xmn 新生代内存设置大小

官方推荐为总内存大小3/8,根据所部署的服务是有状态还是无状态服务,无状态服务可以适当调大一点,但一般不能超过3/4,否则会到导致一次YGC过长。

垃圾回收器选择(Java8)

G1垃圾回收器:适合堆内存大,兼顾吞吐量以及低延迟的应用,要求的堆内存大小至少1MB*2048=2GB

CMS垃圾回收器: 适合低延迟的应用,吞吐量比较低,另外垃圾回收后,容易产生内存碎片,慎用
并行回收器: java8默认回收器,吞吐量比较高,但是STW可能会比较高。
高吞吐量的应用,一般比如大批量处理数据的定时任务
低延迟应用,直接暴露给C端用户的应用

程序启动打开-XX:+HeapDumpOnOutOfMemoryError

当发生OOM会生成dump文件,可以导出,用MAT工具查看哪些对象占用内存过大,方便排查问题

接入监控,比如promethues,方便查看GC情况,并设置告警,方便快速响应

你可能感兴趣的:(jvm,java,开发语言)