问题描述:
最近两天线上某个模块经常报堆内存使用率超过95%报警,因为对该服务进行了排查。
排查步骤:
1. 使用jmap命令生成堆快照
1.1 先使用linux命令获取进程ID
ps -ef|grep service_name
1.2 使用jmap命令生成堆快照
jmap -dump:format=b,file=heap.hprof 3148
2. 分析堆快照文件
2.1 下载堆快照文件到本地
scp heap.hprof 用户名@ip:/home
2.2 使用jdk自带jvisualvm工具查看堆快照文件
./jvisualvm
2.3 打开堆快照文件
点击对应的类型可以看到类的实例信息
从中分析是哪个对象导致的堆内存使用过高