Skip to content

Commit 8a8348b

Browse files
committed
[docs update]JDK监控和故障处理工具新增MAT(Memory Analyzer Tool)
1 parent f852aaf commit 8a8348b

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

Diff for: docs/database/redis/redis-questions-01.md

+1
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,7 @@ maxmemory-policy noeviction
829829

830830
- 《Redis 开发与运维》
831831
- 《Redis 设计与实现》
832+
- 《Redis 核心原理与实战》
832833
- Redis 命令手册:<https://www.redis.com.cn/commands.html>
833834
- RedisSearch 终极使用指南,你值得拥有!:<https://mp.weixin.qq.com/s/FA4XVAXJksTOHUXMsayy2g>
834835
- WHY Redis choose single thread (vs multi threads): [https://medium.com/@jychen7/sharing-redis-single-thread-vs-multi-threads-5870bd44d153](https://medium.com/@jychen7/sharing-redis-single-thread-vs-multi-threads-5870bd44d153)

Diff for: docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md

+20-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ tag:
1313
- **`jstat`**(JVM Statistics Monitoring Tool): 用于收集 HotSpot 虚拟机各方面的运行数据;
1414
- **`jinfo`** (Configuration Info for Java) : Configuration Info for Java,显示虚拟机配置信息;
1515
- **`jmap`** (Memory Map for Java) : 生成堆转储快照;
16-
- **`jhat`** (JVM Heap Dump Browser) : 用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果;
16+
- **`jhat`** (JVM Heap Dump Browser) : 用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果。JDK9 移除了 jhat;
1717
- **`jstack`** (Stack Trace for Java) : 生成虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。
1818

1919
### `jps`:查看所有 Java 进程
@@ -133,6 +133,8 @@ Server is ready.
133133

134134
访问 <http://localhost:7000/>
135135

136+
注意⚠️:JDK9 移除了 jhat([JEP 241: Remove the jhat Tool](https://openjdk.org/jeps/241)),你可以使用其替代品 Eclipse Memory Analyzer Tool (MAT) 和 VisualVM,这也是官方所推荐的。
137+
136138
### **`jstack`** :生成虚拟机当前时刻的线程快照
137139

138140
`jstack`(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合.
@@ -297,16 +299,27 @@ VisualVM 提供在 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的 Java
297299
298300
VisualVM 基于 NetBeans 平台开发,因此他一开始就具备了插件扩展功能的特性,通过插件扩展支持,VisualVM 可以做到:
299301

300-
- **显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)。**
301-
- **监视应用程序的 CPU、GC、堆、方法区以及线程的信息(jstat、jstack)。**
302-
- **dump 以及分析堆转储快照(jmap、jhat)。**
303-
- **方法级的程序运行性能分析,找到被调用最多、运行时间最长的方法。**
304-
- **离线程序快照:收集程序的运行时配置、线程 dump、内存 dump 等信息建立一个快照,可以将快照发送开发者处进行 Bug 反馈。**
305-
- **其他 plugins 的无限的可能性……**
302+
- 显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)。
303+
- 监视应用程序的 CPU、GC、堆、方法区以及线程的信息(jstat、jstack)。
304+
- dump 以及分析堆转储快照(jmap、jhat)。
305+
- 方法级的程序运行性能分析,找到被调用最多、运行时间最长的方法。
306+
- 离线程序快照:收集程序的运行时配置、线程 dump、内存 dump 等信息建立一个快照,可以将快照发送开发者处进行 Bug 反馈。
307+
- 其他 plugins 的无限的可能性……
306308

307309
这里就不具体介绍 VisualVM 的使用,如果想了解的话可以看:
308310

309311
- <https://visualvm.github.io/documentation.html>
310312
- <https://www.ibm.com/developerworks/cn/java/j-lo-visualvm/index.html>
311313

314+
### MAT:内存分析器工具
315+
316+
MAT(Memory Analyzer Tool)是一款快速便捷且功能强大丰富的 JVM 堆内存离线分析工具。其通过展现 JVM 异常时所记录的运行时堆转储快照(Heap dump)状态(正常运行时也可以做堆转储分析),帮助定位内存泄漏问题或优化大内存消耗逻辑。
317+
318+
在遇到 OOM 和 GC 问题的时候,我一般会首选使用 MAT 分析 dump 文件在,这也是该工具应用最多的一个场景。
319+
320+
关于 MAT 的详细介绍推荐下面这两篇文章,写的很不错:
321+
322+
- [JVM 内存分析工具 MAT 的深度讲解与实践—入门篇](https://juejin.cn/post/6908665391136899079)
323+
- [JVM 内存分析工具 MAT 的深度讲解与实践—进阶篇](https://juejin.cn/post/6911624328472133646)
324+
312325
<!-- @include: @article-footer.snippet.md -->

0 commit comments

Comments
 (0)