记一次内存暴涨频繁触发FULLGC导致的CPU资源耗尽
异常现象
线上服务突然卡死,进入服务器查看CPU资源耗尽,服务不能正常继续运行
top -Hp pid查看服务进程中的线程消耗情况
定位方法
上面已经看到四个线程将4核服务器资源消耗完
printf %x pid 得到线程的nid
使用jstack工具查看线程状况
jstack pid | grep nid-A 200
发现资源全部消耗在ParallelGC上,那么我们就要查看gc的详情信息
使用jstat gcutil工具
jstat -gcutil pid 刷新频率(毫秒)
此时eden区和old区都已经爆满,fullGC一次时间在3s左右
使用jmap查看heap存活对象
jmap -histo:live pid | head -20