注意:执行该命令的时候会将整个JVM上面的所有线程都暂停,如果你的java堆比较大,比如有10个G左右,那暂停的时间可能比较长,有可能长达10分钟,所以在生产环境慎用这个命令。或者在生产环境,先让运维把请求都先负载到别的机器上面,再执行这个命令。
执行完成后在当前目录就会产生一个9739_jvm_heap.hprof 的文件
jmap -dump: live ,format=b,file=heapLive.hprof 9739 如果带上live会先触发一次GC,GC完则只转存储活着的对象。
然后,这个文件是二进制的文件,人肯定是看不懂的。所以,需要借助分析dump文件的工具,可以使用工具来分析:
- 国内PerfMa社区的XElephant在线工具网站为 https://console.perfma.com/ , https://memory.console.perfma.com/
- GCeasy
网站为 https://gceasy.io/