jdk自带监控分析指令之-jmap

什么是jmap?

jmap是jdk自带的命令,主要用于导出堆转储文件,也可以进行jvm分代空间内存检测,以及对象大小个数排序,
可在安装的jdk->bin目录下找到,如下

结果如图所示

为什么使用jmap?

当发生程序响应时间变长,cpu load过高,GC频繁,OOM,内存泄漏,死锁
就意味着应用出现了问题,就可以使用jmap来导出dump文件,然后对文件进行分析,从而找到问题所在。

怎么使用?

命令行输入jmap
在这里插入图片描述

1.jmap -heap 25536 展示堆中的配置参数以及堆中各区域的使用情况。
结果如图
2.jmap -histo 25536 展示对象堆的直方图(只截取了一部分)

结果如图
3.jmap -histo:live 25536 展示存活对象对象堆的直方图(只截取了一部分)
结果如图
4.jmap -clstats 25536 打印类装入器统计信息
结果如图
5.jmap -finalizerinfo 25536 打印调用finalize方法的对象(要调用finalize方法的对象是会放在finalize的队列当中)
结果如图
6.jmap -dump:format=b,file=cc.hprof 25536 重中之重,生成dump文件
表示成功
生成的文件如下
在这里插入图片描述
7.jmap -dump:live,format=b,file=dd.hprof 25536 生成存活对象的dump文件
文件如图

补充

 也可以通过配置jvm参数达到生成dump文件的需求。
 1.XX:+HeapDumpOnOutOfMemoryError(当程序发生oom的时候生成dump文件)
 2.XX:+HeapDumpAfterFullGC(发生fullGc之后生成dump文件)
 3.XX:+HeapDumpBeforeFullGC(发生fullGc之前生成dump文件)
 4.XX:HeapDumpPath=$文件目录(程序生成dump文件的具体地址,如果不配置此参数则默认生成dump文件在项目的根目录)
### 使用 `jps`、`jstack`、`jmap` 和 `jprofile` 进行 Java 性能监控与故障排查 #### 查看当前的 Java 进程 (`jps`) 为了更方便地定位到想要查看的 Java 进程,可以使用 `jps` 命令。此命令不仅能够显示本地主机上的所有 Java 应用程序及其对应的进程 ID (PID),还支持额外选项来获取更多关于这些应用程序的信息[^2]。 ```bash $ jps -lvm ``` 该指令会列出所有的 Java 进程以及它们启动时所使用的类路径和传递给 JVM 的参数。 #### 获取线程转储 (`jstack`) 当遇到响应迟缓或挂起的应用程序实例时,`jstack` 工具非常有用。通过附加至目标进程中,可以获得其内部状态快照——即所谓的“线程转储”,其中包括每个活动线程的位置(方法名)、锁持有情况以及其他诊断数据[^1]。 对于已经处于非正常工作状态下(例如死锁)的服务端应用来说,这有助于识别潜在的问题根源所在;而对于那些意外终止的情况,则可以从 core 文件中提取相似的数据用于事后分析[^4]。 ```bash $ jstack -F <pid> ``` 这里的 `-F` 参数表示强制模式,在某些情况下可能需要管理员权限才能成功执行上述操作。 #### 分析内存状况 (`jmap`) 利用 `jmap` 可以生成指定 Java 虚拟机实例的堆转储文件,这对于深入研究对象分配行为特别有价值。除了基本的对象统计外,还可以进一步借助其他工具加载并解析此类二进制格式的内容,以便于发现是否存在泄漏等问题[^3]。 创建一个完整的 HPROF 格式的 dump: ```bash $ jmap -dump:live,format=b,file=heap.bin <pid> ``` 注意:这里加上了 `live` 关键字意味着只保存仍然存活的对象集合,通常推荐这样做因为这样可以减少不必要的噪音干扰实际问题查找过程中的视线。 至于提到的 `jprofile` 并不是标准 JDK 自带的一部分,可能是混淆了名称或者是第三方提供的性能剖析软件。如果是后者的话,请参照相应产品的官方文档来进行具体配置与运用指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值