在线上出现内存占用过大,无法被GC回收,服务出现内存溢出等情况时我们需要对当前服务程序进行解刨(大概可以这么理解哈哈),看透这些内存中都是些什么东西。
一、生成 内存快照 dump文件
找到你需要生成快照的java程序PID,这里我以 6396 为例
jmap -dump:format=b,file=user.dump 6396
执行后会在当前cmd的运行目录中生成一个 user.dump的文件
二、分析 dump 文件
使用 JProfiler 打开这个文件,打开前需要将生成的文件后缀改成 hprof,直接改就行,这样我们就能用 JProfiler 打开这个快照文件了
快照文件可能会比较大,等待他加载好
加载之后的效果,下面就可以用 JProfiler 去进行分析等操作了。