JVM 内存溢出案例

问题

导出时文件时服务器卡顿

1
2
3
# jstat -gc 82731 2000
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
417792.0 417792.0 0.0 0.0 418816.0 418801.2 2509824.0 2509798.5 190592.0 167174.9 21632.0 18552.8 98 10.801 465 2527.981 2538.782

分析

导出时, 频繁创建新对象,EDEN区迅速填充满,进入 S0 时,因为超过容量,直接进入 OLD 区,导致 EUOU同时填满,且此时因为还在引用,触发 FGC 却不能清除对象,服务器卡崩溃