背景:
docker偶尔会出现直接OOM退出,通过jstat -gccasue xxx发现老年代持续增加,直到整个docker oom
排查:
dump 下来文件发现真实存活的对象并不多;
如果采用jmap -dump:live xxx时触发了FGC后,老年代会急剧减少
分析:
从现象显然可知:在老年代还没有触发时,整个机器都崩溃了
再排查了以下jvm的xmx和xmn发现跟 内存大小配置一致;
问题显而易见了:系统的内存总共才8g,现在jvm的xmx/xmn直接也配置8g;FGC还没有来得及触发,系统就因为内存溢出直接挂掉
修改方式:
降低xmx/xmn;至少要小于机器的内存大小
总结:
其实是很简单的问题,但是花费了不少时间去分析dump文件,不过也可见大家对于jvm配置也是有些随意,理解还没有很深刻