使用JDK自带的jvisualvm工具查看堆dump文件【回顾】

本文介绍了如何通过命令行方式启动JDK自带的jvisualvm工具,并演示了如何安装visualGC插件来检测和分析死锁问题,重点展示了如何查看死锁时的线程信息。

JDK自带的jvisualvm的使用

  1. 打开方式:

直接命令行输入:jvisualvm ,然后回车​​​​​​​
​​在这里插入图片描述
或者去jdk的bin目录下找到打开

  1. 安装visual GC插件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 检测死锁
    在这里插入图片描述
    再点击“死锁 dump”就可以看到死锁的线程信息了;
    在这里插入图片描述
<think>我们正在讨论Java dump文件分析工具,用户之前询问了Spring Boot日志路径配置,但现在的问题是关于查看Java dump文件工具。根据引用内容,我们可以总结如下: 引用[1]和[2]介绍了dump文件的概念和类型,包括Heap Dump转储)和Thread Dump(线程转储)等。 引用[3]、[4]、[5]提到了几种分析工具: - jdk自带jvisualvm(适合较小的dump文件) - Eclipse Memory Analyzer (MAT)(适合较大的dump文件,并举例说明了在Linux下的下载和解压) - 在mac系统上使用MAT工具分析dump文件的示例(显示了大对象) 因此,我们可以推荐以下工具: 1. **JDK自带工具jvisualvm)**:适合小型dump文件使用方便,但处理大文件可能失败。 2. **Eclipse Memory Analyzer (MAT)**:功能强大,专门用于分析转储,能处理大型dump文件,支持多种操作系统。 3. 此外,还有其他工具如jhat(JDK自带,但较为基础)和商业工具(如YourKit, JProfiler等),但引用中未提及,故不重点推荐。 回答结构: 1. 简要介绍dump文件类型(转储和线程转储)以及对应的工具。 2. 分别详细说明每个工具使用方法(包括下载、安装、基本使用步骤)。 3. 提供示例说明如何用这些工具分析dump文件(特别是MAT的分析示例)。 4. 给出选择建议(根据dump文件大小和需求)。 5. 生成相关问题。 注意:引用标记要放在相关内容的后面,自然添加。 </think>以下是查看 Java dump 文件的常用工具使用方法,综合引用内容整理: --- ### 一、核心工具推荐 1. **Eclipse Memory Analyzer (MAT)** [^3][^4][^5] - **适用场景**:大型转储文件(Heap Dump分析 - **功能亮点**: - 内存泄漏检测(如识别 `Retained Heap` 占比过高的对象) - 直观展示对象依赖关系 - 支持 OQL(对象查询语言) - **安装步骤**: ```bash # Linux 下载 wget https://archive.eclipse.org/mat/1.8.1/rcp/MemoryAnalyzer-1.8.1.20180910-linux.gtk.x86_64.zip unzip MemoryAnalyzer-*.zip ``` - Windows/Mac:官网下载[内存分析工具](https://www.eclipse.org/mat/downloads.php) 2. **JDK 自带工具** [^2][^3] - **jvisualvm**: - 适合小型 dump 文件(<2GB) - 内置线程/分析功能 - 启动命令:`jvisualvm`(JDK 安装目录的 bin 文件夹) - **jhat**: - 基础分析工具 - 启动命令:`jhat heapdump.hprof` 3. **命令行工具** [^2] - **jstack**:查看线程转储(Thread Dump) ```bash jstack -l <pid> > thread_dump.txt ``` - **jmap**:生成转储(Heap Dump) ```bash jmap -dump:format=b,file=heapdump.hprof <pid> ``` --- ### 二、工具使用示例(以 MAT 为例) 1. **分析步骤**: - 打开 MAT → `File` → `Open Heap Dump` - 查看内存泄漏报告(Leak Suspects Report) - 使用直方图(Histogram)按内存占用排序对象 2. **典型案例**[^5]: ```plaintext Class Name | Retained Heap | Percentage --------------------------------------------------------- BoundedConcurrentHashMap | 2,016,348,896 | 91.71% ``` *标识:`org.hibernate.internal.util.collections.BoundedConcurrentHashMap` 占用了 91.7% 内存* --- ### 三、工具选用建议 | 场景 | 推荐工具 | 优势 | |---------------------|---------------|------------------------------| | 大型转储 (>2GB) | MAT | 高效处理大文件,泄漏分析精准 | | 小型转储/线程分析 | jvisualvm | 开箱即用,集成监控功能 | | 快速生成 dump | jmap/jstack | 无需 GUI,适合服务器环境 | --- ### 四、分析流程 1. **收集 dump**: ```bash # 生成转储 jmap -dump:live,format=b,file=app_heap.hprof <pid> ``` 2. **传输文件**:将 `.hprof` 文件下载到本地 3. **MAT 分析**: - 打开文件查看 `Dominator Tree` - 定位 `Retained Heap` 最高的对象 4. **解决问题**:修复代码中的内存泄漏点(如未释放集合引用) > ⚠️ **注意事项**: > - 生产环境生成 dump 会暂停 JVM,需在低峰期操作 > - Linux 系统需确保磁盘空间足够(dump 文件大小 ≈ 内存占用)[^2]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walking_w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值