目录
- 1. Jconsole
- 1.1 Jconsole简介
- 1.2 Jconsole常用功能
- 2. VisualVM
- 2.1 VisualVM简介
- 2.2 安装插件
- 3.总结
上篇文章我们一起学习了MAT工具的使用方式,除了第三方提供的JVM工具之外,JDK也自带了Jconsole和VisualVM,功能也都很强大;
1. Jconsole
1.1 Jconsole简介
JDK1.5开始新增的java监控和管理控制吧,它提供对JVM内存、线程和类的监控;
可以直接在java的安装目录,找到bin/jconsole.exe双击打开:
首先选择你想要连接的java进程,点击连接;
包括一些堆、类、线程、CPU情况;
1.2 Jconsole常用功能
Jconsole的使用还是相对比较简单;通过Jconsole主要可以了解到堆、类、线程的情况;
1.2.1 内存信息
可以查看堆(Eden、S0、S1、Old)的使用情况,了解这些使用情况为你的JVM参数优化提供重要的参考指标;
1.2.2 线程信息
这块可以查看当前进程中开启的线程数量,以及检查线程之间是否存在死锁问题;
运行这段代码:
可以看出,线程A已经阻塞,想获取一个字符串,但被线程B占用;
2. VisualVM
2.1 VisualVM简介
VisualVM与Jconsole相比,VisualVM的功能更全面,并且它有比较好用的插件功能;
在java的安装目录下,找到 jvisualvm.exe 双击打开:
从这首页可以看出一些内存情况,选择线程,可以查看是否有死锁问题,如果有,点击生成 dump会生成一份dump文件;
2.2 安装插件
感兴趣的同学可以安装一个插件:VisualGC,看一下功能图,你就会爱上它:
2.2.1 下载插件
下载地址:https://visualvm.github.io/pluginscenters.html2.2.2 安装插件
3.总结
通过上面的小例子,差不多就对这两款工具有了大致的了解,其它工作中真正用它的机会不多,并且工作中大部分都接入的有APM,但本地开发过程中遇到问题,拿出来排查个线程、JVM等相关问题,还是非常有帮助的;