《JVM调优》- Jmap指令详解

Jmap

常见用途

    生成JVM堆的dump文件 查看finalize执行队列 查看Java堆和方法区的详细信息

常用指令

jmap [option] <pid>
jmap [option] <executable <core>
jmap [option] [server_id@]<remote server IP or hostname>
  1. 指令一为jmap最常用指令,以进程id为入参查询相关信息,后续相关参数都以该指令做演示
  2. 指令二为查询core dump文件相关信息
  3. 指令三为查询远程服务,考虑到真实生产中的环境隔离,因此此指令也很少使用

命令参数说明:

    pid:java进程ID

linux系统中可用ps命令查询 Windows系统中可用jps命令查询

    option:jmap命令的核心参数,接下去详细讲解可选参数

option可选参数

-heap

展示Java堆信息详情,包含以下内容:

    GC使用的算法 heap(堆)的配置信息 JVM堆内存的使用情况 分代情况 每个代的总容量、已使用、可使用内存

-histo:[:live]

展示了Java Heap中对象的统计信息,包括了:

    对象的数量 占用内存的大小 类的全类名

此外,加上live参数,则只展示活动的对象

-clstats

展示元空间的类加载器信息

-finalizeinfo

展示正在等待Finalizer线程执行finalize方法的对象(及等待回收的对象)信息

-dump:< dump-options>

    live:可选,是否只展示活动对象 format=b:表示以hprof二进制格式转储java的heap信息 file=:转储快照文件的名称

生成的dump文件可以通过分析工具进行解析,常用的包括jdk自带的jvisualvm,或者jconsole

-F

强制模式,在pid无响应时使用,一般搭配-dump或者-histo参数,此模式下,live自参数无效

-h | -help

显示帮助信息

经验分享 程序员 微信小程序 职场和发展