Java的jmap命令使用详解
jmap命令简介
jmap(Java Virtual Machine Memory Map)是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。除此以外,jmap命令还可以查看finalize执行队列、Java堆和方法区的详细信息,比如空间使用率、当前使用的什么垃圾回收器、分代情况等等。
和jinfo命令一样,在Windows系统上使用还是有一些限制的。在没有dbgeng.dll
的Windows系统中,必须安装用于Windows的调试工具才能使jinfo命令正常工作,PATH环境变量应该包含jvm.dll的位置。
jmap命令参数
命令语法:
jmap [options] pid
命令参数说明:
option
:jmap命令的可选参数。如果没有指定这个参数,jinfo命令会显示Java虚拟机进程的内存映像信息,如下图:
文章图片
pid
:要打印配置信息的Java虚拟机的进程ID。
option
都有哪些参数呢?我们来看一下。-heap
显示Java堆的如下信息:
- 被指定的垃圾回收算法的信息,包括垃圾回收算法的名称和垃圾回收算法的详细信息。
- 堆的配置信息,可能是由命令行选项指定,或者由Java虚拟机根据服务器配置选择的。
- 堆的内存空间使用信息,包括分代情况,每个代的总容量、已使用内存、可使用内存。如果某一代被继续细分(例如,年轻代),则包含细分的空间的内存使用信息。
文章图片
-histo[:live]
显示Java堆中对象的统计信息,包括:对象数量、占用内存大小(单位:字节)和类的完全限定名。比如:
文章图片
要获得某个对象的大小,可以将其总大小除以该对象类型的数量。如果指定了
live
参数,则只计算活动的对象。比如:文章图片
-clstats
显示Java堆中元空间的类加载器的统计信息,包括:
class_loader:当Java虚拟机运行时,类加载器对象的地址
classes:已加载类的数量
bytes:该类加载器加载的所有类的元数据所占的字节数
parent_loader:父类加载器对象的地址,如果没有显示
null
。alive:是否存活的标识,表示类加载器对象是否将被垃圾回收。
type:该类加载器的类名。
比如:
文章图片
-finalizerinfo
显示在F-Queue中等待Finalizer线程执行finalize方法的对象。比如:
文章图片
-dump:[live,]format=b,file=
生成Java虚拟机的堆转储快照dump文件。具体说明如下:
live
参数是可选的,如果指定,则只转储堆中的活动对象;如果没有指定,则转储堆中的所有对象。format=b
表示以hprof二进制格式转储Java堆的内存。file=
用于指定快照dump文件的文件名。
文章图片
-F
强制模式。如果指定的pid没有响应,可以配合
-dump
或-histo
一起使用。此模式下,不支持live参数。比如:文章图片
-h 和 -help
显示jinfo命令的帮助信息。
最后,谢谢你这么帅,还给我点赞和关注。微信公众号:万猫学社
微信扫描二维码
关注后回复「电子书」
【Java的jmap命令使用详解】获取12本Java必读技术书籍
文章图片
推荐阅读
- 打包发布你的vue组件到npm
- 2119、反转两次的数字|2119、反转两次的数字 | 算法(leetode,附思维导图 + 全部解法)300题
- Vuestic|Vuestic UI - 免费开源的高质量 Vue3 UI 组件库,还内置了漂亮的 Vuestic Admin 后台框架
- 三分钟学习一下JavaScript中map对象的用法
- 历史上的今天|【历史上的今天】1 月 28 日(Sun 联合创始人诞生;图灵奖数据库先驱逝世;雅虎收购 GeoCities)
- 历史上的今天|【历史上的今天】3 月 19 日(图灵奖人工智能先驱诞生;微软发布 IE8;Android Auto 上线)
- 『德不孤』Pytest框架|『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件
- VS2022不能使用的解决方案
- angular动态组件加载器的个人理解
- Java12新特性及代码示例