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] >
  • jmap [option] [server_id@]

    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