几款JVM图形化监控工具

4,310 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

前言

几款JVM的图形化监控工具介绍,这类工具作用大同小异,看需求选择适合自己的。

jconsole

JConsole工具是JDK自带的可视化监控工具。查看java应用程序的运行概况、监控堆信息、永久区使用情况、类加载情况等。

在命令行输入 jconsole 即可打开。可以直接选择本地JVM,也可以通过JMX方式连接远程JVM

在这里插入图片描述 1.概览

堆内存使用量:展示Java内存模型中的堆

线程:展示JVM中活动线程的数量

类:JVM 一共加载了多少个类

CPU占用率:CPU使用率反馈系统负载和压力

在这里插入图片描述 2.内存

提供展示统计了6个内存区域的内存使用和变化情况

还有各个内存池的百分比使用率,以及堆/非堆空间的汇总使用情况

还可以看到JVM使用的垃圾收集器,以及执行垃圾收集的次数,以及相应的时间消耗

在这里插入图片描述 3.线程

线程面板展示了线程数变化信息,以及监测到的线程列表

可以根据名称直接查看线程的状态和调用栈

还可以直接点击“检测死锁”按钮来检测死锁,如果没有死锁则会提示“未检测到死锁”

在这里插入图片描述

4.类

可以直接看到 JVM 加载和卸载的类数量汇总信息,以及随着时间的动态变化情况

在这里插入图片描述 5.VM

VM概要的数据有五个部分:

1.虚拟机的信息

2.线程数量,以及类加载的汇总信息

3.堆内存和 GC 统计

4.操作系统和宿主机的设备信息,比如CPU 数量、物理内存、虚拟内存等等

5.JVM启动参数和几个关键路径

在这里插入图片描述

jvisualvm

jvisualvm能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈。

jvisualvm使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。

概览

在命令行输入jvisualvm即可启动jvisualvm

在jdk的安装目录的bin目录下,找到jvisualvm.exe,双击即可打开

在这里插入图片描述

分为本地JVM进程与远程JVM进程,这里选择本地JVM进程,双击某个进程即可打开

显示JVM的一些基本信息,以及显示JVM相关参数 在这里插入图片描述

查看CPU、内存、类、线程运行信息

监视面板

在这里插入图片描述

线程面板

可以点击右上角Dump按钮,将线程的信息导出,其实就是执行的jstack命令

在这里插入图片描述

运行:正在运行的

休眠:sleep

等待:wait

驻留:线程池里面的空闲线程

监视:阻塞的线程,正在等待锁

抽样器面板

抽样器可以对CPU、内存在一段时间内进行抽样,以供分析

在这里插入图片描述

插件安装

支持插件功能,Visual GC插件下载地址:visualvm.github.io/pluginscent…

在工具栏安装插件

在这里插入图片描述

若获取可用插件异常,访问:https://visualvm.github.io/pluginscenters.html ,找到对应版本范围,包含安装JDK版本的链接 在这里插入图片描述 复制如下查询出来的链接 在这里插入图片描述 并在设置中添加 在这里插入图片描述

Visual GC

安装Visual GC,该插件能直观的观察到整个垃圾回收的过程 在这里插入图片描述

安装后重启进入,任意监测一个java进程,非常直观的表示了垃圾回收过程

在这里插入图片描述

VisualGC

VisualGC是一款插件,在IDEA插件中下载即可。

在这里插入图片描述

双击某个进程进入

在这里插入图片描述

监控界面

在这里插入图片描述

jmc

JDK8好像需要单独下载,因为在JDK7的bin目录发现了jmc,然而JDK8没有。

官网:http://jdk.java.net/jmc/8/ 在这里插入图片描述

在命令行输入jmc即可打开

在这里插入图片描述

选择某个进程

在这里插入图片描述

监控界面

在这里插入图片描述