《JVM调优》- Jmap指令详解
Jmap
常见用途
-
生成JVM堆的dump文件 查看finalize执行队列 查看Java堆和方法区的详细信息
常用指令
jmap [option] <pid> jmap [option] <executable <core> jmap [option] [server_id@]<remote server IP or hostname>
- 指令一为jmap最常用指令,以进程id为入参查询相关信息,后续相关参数都以该指令做演示
- 指令二为查询core dump文件相关信息
- 指令三为查询远程服务,考虑到真实生产中的环境隔离,因此此指令也很少使用
命令参数说明:
-
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
显示帮助信息