jmap(JVM Memory Map):作用一方面是获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、类加载信息等。
开发人员可以在控制台中输入命令“jmap -help”查阅jmap工具的具体使用方式和一些标准选项配置
官方帮助文档
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jmap.html
基本语法
- jmap [option]
- jmap [option]
> -
option 参数
-dump:生成Java堆转储快照:dump文件
- 特别的:-dump:live只保存堆中的存活对象
- -heap:输出整个堆空间的详细信息,包括GC的使用、堆配置信息,以及内存的使用信息等
- -histo:输出堆中对象的统计信息,包括类、实例数量和合计容量
- -histo:live:只统计堆中存活的对象
- -permstat:以Classloader为统计口径输出永久代的内存状态信息
- -finallizerinfo:现实在F-Queue中等待Finalizer线程执行finalize方法的对象
- 仅对linux/solaris平台有效
- -F:当虚拟机进程对-dump选项没有任何响应时,可使用此选项强制执行生成dump文件
导出内存映像文件
手动方式
- jmap -dump:format=b,file=
jmap -dump:live,format=b,file=
自动的方式
-XX:+HeapDumpOnOutOfMemoryError
- -XX:HeapDumpPath=
显示堆内存相关信息
- jmap -heap pid
- jmap -histo pid