虚拟机系列:性能监控可视化工具-JConsole
上面两篇文章说了下jdk自带的命令监控工具,本文说下可视化的工具JConsole,这个是jdk自带的图形化性能监控工具。通过JConsole工具可以看到Java应用程序运行情况,可以监控到堆信息,类加载情况,线程信息等。 其实就是把前篇说的命令工具可视化了
打开并连接Java程序
JConsole程序是在%JAVA_HOME%/bin的目录下,直接双击即可启动客户端,如下图
共有两种连接方式,分别是本地进程的连接和远程进程的连接
本地进程:本地进程下面罗列的是本机上正在运行的Java程序,直接双击即可进入到这个进程的监控页面。
远程进程:可以通过地址和端口连接远程的Java进程,但是远程的进程启动的时候需要指定一些参数,如下
-Djava.rmi.server.hostname=127.0.0.1 //远程服务器的IP(本地可访问)
-Dcom.sun.management.imxremote
-Dcom.sun.management.jmxremote.port=5555 // 远程服务器的端口(随便定一个,用于JMX管理该进程)
-Dcom.sun.management.jmxremote.authenticate=false // 是否验证(true的话需要配置密码,自行百度吧)
-Dcom.sun.management.jmxremote.ssl=false //ssl控制
用以上参数启动Java应用程序,然后在远程连接中填入 127.0.0.1:5555
点击连接即可
概况
在点击连接后,直接进入到概况界面。如下图,共有4个实时的折线图,分别代表堆内存使用量的变化,活动线程数的变化量,已加载类的数量 和CPU占用率的百分比。
内存监控
选择内存的选项卡,可以看到整个页面都是堆内存的信息,图表一栏还可以切换,包含非堆内存,Eden区,Survivor区,老年代,元空间等内存使用情况。点击右上角的执行GC,可以强制执行一次FullGC
线程监控
主要就是关注是否存在死锁,活锁,死循环等线程
选择线程的选项卡,可以看到线程数量的变化折线图,折线图下面显示的程序中每一个线程,点击具体的线程可以在右边看到此线程的具体信息。
最下方有个检测死锁的按钮(实现一个死锁功能),可以自动筛选出出现死锁的线程,如下是死锁的实现代码
如下图检测到的两个线程出现死锁的信息
使用此功能可以方便的查看应用的线程信息,也能很快的定位到死锁问题
相当于之前文章说的命令工具jstack
类加载情况
如下图就是显示系统已经装载的类的数量,还有已经卸载的类数量,这个类信息不用关注太多
虚拟机信息
主要关注的是下图中的堆内存相关的信息
VM概要的选项卡,显示了当前应用程序的运行环境,包括虚拟机类型,版本,堆信息,服务器信息,VM参数,垃圾收集器等信息,具体内容如下图
总结
JConsole的使用效果和之前的文章中说的命令工具效果是一样的,不过这个是直接可视化的,查看更方便,但是需要在服务启动的时候加入固定的参数来使用JMX来监控服务的进程。
我是纪先生,用输出倒逼输入而持续学习,持续分享技术系列文章,以及全网值得收藏好文,欢迎关注公众号,做一个持续成长的技术人。
JVM虚拟机系列历史文章
转载自:https://juejin.cn/post/7088492612885151752