jmap

jmap 全称 Java Memory Map,是 Java 虚拟机自带的一种内存映像工具。

Oracle 将 jma p描述为一种“输出进程、核心文件、远程调试服务器的共享对象内存映射和堆内存细节”的程序。通过它可以查看内存中对象实例,从而解决程序出现不正常的高内存负载、频繁无响应或内存溢出等问题。

看过前面文章的网友可能都知道,学习命令之前,我们都可以通过 -help 或 -h 来查看一个命令的帮助信息。jmap 同样提供的有帮忙文档。

各个参数解释如下:

  • option:选项参数。

  • pid:需要打印配置信息的进程 ID。

  • executable:产生核心 dump 的 Java 可执行文件。

  • core:需要打印配置信息的核心文件。

  • server-id:可选的唯一 id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。

  • remote server IP or hostname:远程调试服务器的IP地址或主机名。

option

  • no option:查看进程的内存映像信息,类似 Solaris pmap 命令。

  • heap:显示 Java 堆详细信息

  • histo[:live]:显示堆中对象的统计信息

  • clstats:打印类加载器信息

  • finalizerinfo:显示在 F-Queue 队列等待 Finalizer 线程执行 finalizer 方法的对象

  • dump:<dump-options>:生成堆转储快照

  • F:当 -dump 没有响应时,使用 -dump 或者 -histo 参数. 在这个模式下,live 子参数无效.

  • help:打印帮助信息

  • J<flag>:指定传递给运行 jmap 的 JVM 的参数

使用 jmap 这个命令需要注意的是,如果你的 JAVA_HOME/bin/ 目录,没有加入 path 中,则无法做到在任意目录下使用 jmap 这个命令。如果加入到了 path 中,可以使用 whereis jmap 查看具体的命令路径。

jmap pid 用来查看进程的内存映像信息,类似 Solaris pmap 命令。

 

注意,在 mac 下第一次使用这个命令,可能会弹框让你输入计算机密码,之后在使用则不会有这个弹框。

jmap -heap pid 命令显示 Java 堆详细信息。打印一个堆的摘要信息,包括使用的 GC 算法、堆配置信息和各内存区域内存使用信息。

 

jmap -histo:live pid 显示堆中对象的统计信息。其中包括每个 Java 类、对象数量、内存大小(单位:字节)、完全限定的类名。打印的虚拟机内部的类名称将会带有一个’*’前缀。如果指定了 live 子选项,则只计算活动的对象。

jmap -clstats pid 打印类加载器信息。-clstats 是 -permstat 的替代方案,在 JDK8 之前,-permstat 用来打印类加载器的数据
打印 Java 堆内存的永久保存区域的类加载器的智能统计信息。对于每个类加载器而言,它的名称、活跃度、地址、父类加载器、它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印。

jmap -finalizerinfo pid 打印等待终结的对象信息。

jmap -dump:format=b,file=heapdump.phrof pid 生成堆转储快照 dump 文件。以 hprof 二进制格式转储 Java 堆到指定 filename 的文件中。live 子选项是可选的。如果指定了 live 子选项,堆中只有活动的对象会被转储。想要浏览 heap dump,你可以使用 jhat(Java 堆分析工具)读取生成的文件。

执行这个命令需要注意,JVM 会将整个 heap 的信息 dump 写入到一个文件,heap 如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证 dump 的信息是可靠的,所以会暂停应用,线上系统慎用。

jmap 输出中 class name 非自定义类的说明。

以上内容,大家可以参考我的这些文章《使用VisualVM对JAVA程序进行性能分析及调优》、《jvm hs_err_pid.log 文件分析工具 CrashAnalysis 使用教程》、《jvm crash(崩溃)文件 hs_err_pid.log 分析教程》进行深度学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值