线上服务堆内存占用过高排查

问题描述:

最近两天线上某个模块经常报堆内存使用率超过95%报警,因为对该服务进行了排查。

排查步骤:

1. 使用jmap命令生成堆快照

   1.1 先使用linux命令获取进程ID             

ps -ef|grep service_name

         线上服务堆内存占用过高排查_第1张图片

   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张图片

   2.3 打开堆快照文件

线上服务堆内存占用过高排查_第3张图片

  点击对应的类型可以看到类的实例信息

线上服务堆内存占用过高排查_第4张图片

从中分析是哪个对象导致的堆内存使用过高

你可能感兴趣的:(Java,Heap)