jmap是JDK中提供的一个用来监视进程运行中的jvm物理内存的占用情况的工具。该进程内存内,所有对象的情况,例如产生了哪些对象,对象数量。当系统崩溃时,jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等。
使用jmap会影响线上运行的应用,所以尽量不要在线上执行此命令。
$ jmap -histo pid|head -n 10 查看前10位
$ jmap -histo pid | sort -k 2 -g -r 查看对象数最多的对象,按降序输出
$ jmap -histo pid | sort -k 3 -g -r 查看内存的对象,按降序输出
通过这三个命令,我们可以很清楚的看到当前进程中对象的大小及个数,从而辅助我们进行分析
使用jmap把堆信息导出,并使用可视化工具mat分析
$ jmap -dump:format=b,file=test.dump ${pid}
Java常用分析工具之jmap
https://www.bo56.com/java%E5%B8%B8%E7%94%A8%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7%E4%B9%8Bjmap/
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
https://cloud.tencent.com/developer/article/1543603?from=information.detail.jstack%E6%80%8E%E4%B9%88%E4%BD%BF%E7%94%A8
三个实例演示 Java Thread Dump 日志分析
https://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html
可视化在线内存分析工具(Java Memory Head Dump Analyzer Tool)
https://blog.csdn.net/weixin_30484149/article/details/112693697
https://heaphero.io/index.jsp
1. 为方便上传,可先将dump文件压缩成 zip 或者 gz 格式
2. 可将分析结果导出成PDF,便于下载分析
How to fix ?
To see our recommendations, please purchase Enterprise Edition.