几款JVM图形化监控工具

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 几款JVM图形化监控工具,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言

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

JConsole

JConsole是JDK自带的一款监控工具,可以通过JMX(Java管理扩展)技术监控Java应用程序的性能数据。可以通过远程连接或在本地进行监控,提供了图形化的界面展示。

可以查看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启动参数和几个关键路径

在这里插入图片描述

VisualVM

VisualVM是JDK自带的一款工具,可以用于监控Java应用程序的CPU、内存和线程等方面的性能数据。它可以在本地或远程监控,并提供了图形化的界面展示。

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

概览

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

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

在这里插入图片描述

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

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

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

监视面板

在这里插入图片描述

线程面板

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

在这里插入图片描述

运行:正在运行的

休眠:sleep

等待:wait

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

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

抽样器面板

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

在这里插入图片描述

插件安装

支持插件功能,Visual GC插件下载地址:https://visualvm.github.io/pluginscenters.html

在工具栏安装插件

在这里插入图片描述

若获取可用插件异常,访问: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即可打开

在这里插入图片描述

选择某个进程

在这里插入图片描述

监控界面

在这里插入图片描述

JHSDB工具

JHSDB是一款基于服务性代理实现的进程外调试工具。服务性代理是 HotSpot 虚拟机中一组用于映射 Java 虚拟机运行信息的,主要基于 Java 语言实现的API 集合。

开启HSDB

启动JHSDB时必须将sawindbg.dll复制到对应目录的jre目录下,此Jre目录是指:通常Windos上安装JDK1.8后会在JDK安装同级目录有一个jre的目录

例如:在JDK的目录下,如:D:\Development\Java\jdk8\jre\bin\sawindbg.dll,将其复制到Jre目录,如:D:\Development\Java\jre8\bin\sawindbg.dll

启动HSDB

在JDK的lib目录下执行命令

D:\Development\Java\jdk8\lib>java -cp ./sa-jdi.jar sun.jvm.hotspot.HSDB

若未执行开启配置,则出现以下异常:

D:\Development\Java\jdk8\lib>java -cp ./sa-jdi.jar sun.jvm.hotspot.HSDB
Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: Can't load library: D:\Development\Java\jre8\bin\sawindbg.dll
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.<clinit>(WindbgDebuggerLocal.java:661)
        at sun.jvm.hotspot.HotSpotAgent.setupDebuggerWin32(HotSpotAgent.java:567)
        at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:335)
        at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
        at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
        at sun.jvm.hotspot.HSDB.attach(HSDB.java:1184)
        at sun.jvm.hotspot.HSDB.access$1700(HSDB.java:53)
        at sun.jvm.hotspot.HSDB$25$1.run(HSDB.java:456)
        at sun.jvm.hotspot.utilities.WorkerThread$MainLoop.run(WorkerThread.java:66)
        at java.lang.Thread.run(Unknown Source)

D:\Development\Java\jdk8\lib>

使用jps命令查找对应程序的进程ID

PS D:\> jps
23000 Jps 
25064 Bootstrap

在JHSDB工具中连接该进程
在这里插入图片描述
在这里插入图片描述
Tools菜单栏显示常用工具
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136948.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!