深入理解Java虚拟机——Java内存映像工具(Jmap)

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Java虚拟机——Java内存映像工具(Jmap)相关的知识,希望对你有一定的参考价值。

目录

一、Java内存映像工具(jmap)的概述

  • jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为headdump或dump文件)。
  • 如果不使用jmap命令,要想获取Java堆转储快照,通过-XX:+HeadDumpOnOutOfMemoryError参数,可以让虚拟机在OOM异常出现之后自动生成dump文件。
  • 通过-XX:+HeadDumpOnCtrlBreak参数则可以使用【Ctrl】+【Break】键让虚拟机生成dump文件。
  • 在linux系统下通过kill -3命令发送进程退出信号“吓唬”一下虚拟机,也能拿到dump文件。

二、Java内存映像工具(jmap)的作用

  • 读取dump文件。
  • 查询finalize执行队列。
  • 查询java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器。

三、Java内存映像工具(jmap)的格式及参数说明

  • 格式
    jmap [ option ] vmid

  • 参数说明

    作用
    dump生成Java堆转储快照。格式为:-dump:[live,] format=b, file=< filename>,其中live子参数说明是否只dump出存活的对象。
    finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在Linux/Solaris平台下有效。
    heap显示Java堆详细信息,如使用哪种回收器、参数配置 、分代状况等。只在linux/Solaris平台下有效。
    histo显示堆中对象统计信息,包括类、实例数量、合计容量。
    permstat以ClassLoader为统计口径显示永久代内存状态,只在Linux/Solaris平台下有效。
    F当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照,只在Linux/Solaris平台下有效。

四、Java内存映像工具(jmap)的执行样例

  • 执行查看进程号命令

    jps
    
  • 生成Java堆转储快照命令

    jmap -dump:format=b,file=d:\\a.bin 16688
    
  • 截图如下:

以上是关于深入理解Java虚拟机——Java内存映像工具(Jmap)的主要内容,如果未能解决你的问题,请参考以下文章

深入理解java虚拟机第二版虚拟机性能监控与故障处理工具

深入理解java虚拟机基础故障处理工具(jmapjhatjstack等)

深入理解Java虚拟机之读书笔记四 性能监控与故障处理工具

深入理解Java虚拟机Java内存区域与内存溢出异常

深入理解Java虚拟机-常用vm参数分析

深入理解java虚拟机---虚拟机工具VisualVM(十九)