Jmap命令

811 阅读2分钟

Jmap Command

打印进程、核心文件或远程调试服务器的共享对象内存映射或堆内存详细信息。这个命令是实验性,不支持的。

概要

jmap [options] pid

jmap [options] executable core

jmap [options] [pid] server-id@remote-hostname-or-IP

  • options :命令行选项,见Options。
  • pid : 要打印的内存映射的进程ID,这个进程必须是Java进程。获取Java进程信息可以使用Jps命令。
  • executable : 从核心转储产生的Java可执行文件.
  • core : 要打印内存映射的核心文件。
  • remote-hostname-or-IP : 远程调试服务主机或者IP地址
  • server-id : 在同一个主机上运行多个调试服务时用来识别的唯一的标识
描述

Jmap命令打印进程、核心文件或远程调试服务器的共享对象内存映射或堆内存详细信息。如果指定的进程运行在64位JVM上,可能需要指定-J-d64选项,例如: jmap -J-d64 -heap pid

Note : 这个工具不支持,可能在以后JDK版本中不再支持。在不存在dbgeng.dll文件的Windows系统中,必须安装Windows的调试工具以使这些工具工作。

选项
  • <no option>

    当没有指定选项时,jmap 命令打印共享对象映射。对目标JVM上的每个加载的共享对象,地址,映射大小,和共享对象文件的全路径都会被打印。这个行为和Oracle Solaris的pmap工具类似。

  • -dump:[live,] format=b,file=filename

    转储Java堆到filename文件,以二进制hprof格式。live是可选的,当指定时,只有堆中活跃的对象才会被转储。为了浏览堆转储文件,可以使用jhat命令来阅读生成的文件。

  • -finalizerinfo

    打印正在等待定稿的对象的信息。

  • -heap

    打印垃圾回收使用的摘要信息,堆配置和生成堆使用情况。此外,内部字符的带下和数量也打印了。

  • -histo[:live]

    打印堆的直方图。每个类的对象数量,内存大小,全限定类名都会打印。JVM内部类名用星号(*)前缀打印。 如果指定了live子选项,则只计算活动对象。

  • -clstats

    打印类加载器的Java堆统计。 对于每个类加载程序,打印其名称、活动程度、地址、父类加载程序以及加载的类的数量和大小。

  • -F

    强制。当jmap -dump或者jmap -histo命令没有反应时,使用这个选项。这种模式不支持live子选项。

  • -h

    打印帮助信息

  • -help

    打印帮助信息

  • -Jflag

    将标志传递给运行jmap命令的Java虚拟机。

参考
  1. [官方文档](docs.oracle.com/javase/8/do…