一 现象
告警系统发出接口波动告警,JVM监控显示内存回收不掉,长时间不重启服务应用卡顿
二 产生原因
大文件读取、全局集合对象、数据库select没有where导致全表数据写入内存等等
三 排查分析
命令行
#1、通过top找对使用CPU最高的进程:top
#2、找对进程中占用CPU最高的线程:top -p [进程ID]H
#3、将线程号转换成16进制:printf '%x' [线程ID]
#4、通过jstack命令找到线程的堆栈:jstack [进程ID]|grep -A 12 [16进制的线程ID]
MAT工具【Eclipse 官网下载就能用】
主要是用查看Leak Suspects下的Shallow heap下的对象