持续创作,加速成长!这是我参与「掘金日新计划 · 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即可打开
选择某个进程
监控界面