软件指南针:专注于软件传播与分享

JDK工具jmap用法详解

来源:原创 1477次浏览 0条评论
☞ 本文主要介绍软件Java的相关内容:JDK工具jmap用法详解

   其下列版本/分支可以参考本文:

  • 全部版本/分支

jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。

用法摘要

#指定进程号(pid)的进程
jmap [ option ] <pid>
#指定核心文件
jmap [ option ] <executable <core>
#指定远程调试服务器
jmap [ option ] [server-id@]<remote-hostname-or-IP>

参数

option
选项参数是互斥的(不可同时使用)。想要使用选项参数,直接跟在命令名称后即可。
pid
需要打印配置信息的进程ID。该进程必须是一个Java进程。想要获取运行的Java进程列表,你可以使用jps。
executable
产生核心dump的Java可执行文件。
core
需要打印配置信息的核心文件。
remote-hostname-or-IP
远程调试服务器的(请查看jsadebugd)主机名或IP地址。
server-id
可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。

描述

jmap用于打印指定Java进程、核心文件或远程调试服务器的共享对象内存映射或堆内存细节。

如果给定的进程运行于64位的虚拟机上,你可能需要使用指定-J-d64选项,例如:

jmap -J-d64 -heap pid
注意 - 此工具是不受支持的,不确定在未来版本的JDK中是否可用。在不存在dbgeng.dll的Windows系统中,需要安装'Windows调试工具',才能让这些工具工作。另外,PATH环境变量应该包含目标进程或Crash Dump文件产生目录使用的jvm.dll的路径。

例如,set PATH=<jdk>\jre\bin\client;%PATH%

选项

<no option>
如果使用不带选项参数的jmap打印共享对象映射,将会打印目标虚拟机中加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径全称。这与Solaris的pmap工具比较相似。
-dump:[live,]format=b,file=<filename>
以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。想要浏览heap dump,你可以使用jhat(Java堆分析工具)读取生成的文件。
-finalizerinfo
打印等待终结的对象信息。
-heap
打印一个堆的摘要信息,包括使用的GC算法、堆配置信息和generation wise heap usage。
-histo[:live]
打印堆的柱状图。其中包括每个Java类、对象数量、内存大小(单位:字节)、完全限定的类名。打印的虚拟机内部的类名称将会带有一个'*'前缀。如果指定了live子选项,则只计算活动的对象。
-permstat
打印Java堆内存的永久保存区域的类加载器的智能统计信息。对于每个类加载器而言,它的名称、活跃度、地址、父类加载器、它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印。
-F
强制模式。如果指定的pid没有响应,请使用jmap -dumpjmap -histo选项。此模式下,不支持live子选项。
-h
打印帮助信息。
-help
打印帮助信息。
-J<flag>
指定传递给运行jmap的JVM的参数。

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部