概述
VisualVM是在GitHub上发布的一个独立的工具,并且作为GraalVM的一个可选的组件。独立的工具运行在一些兼容的JDK上,绑定的工具被配置为运行使用主机GraalVM。
VisualVM还在Oracle的JDK6-8的版本中,作为JVM的一部分进行发布。在Oracle的JDK9中停止发布。
当应用程序在Java虚拟上运行时,VisualVM提供详细的关于应用程序的信息。VisualVM以图形化的用户接口使你快速、轻松的看到多个应用程序的相关信息。
下载与运行
如果你使用的是JDK是9以上,那么VisualVM就是独立存在的。我们可以官方网站下载相关的安装包。下载地址如下:
https://visualvm.github.io/index.html
安装后直接解压,运行visualVM的时候,需要使用命令行进行,因为它并不对当前主机下的JAVA_HOME的环境变量进行感知,需要设置JDK的相关目录,命令如下:
# Windows下
cd D:\develop\soft\visualvm_214\visualvm_214\bin
./visualvm.exe --jdkhome "D:\develop\soft\jdk-16" --userdir "D:\develop\Monitoring\visualVM"
插件管理
VisualVM默认的情况下,只有一些简单的线程、内存监控等基础功能,而对于其他的类似于MBean的支持都需要插件的支持。安装插件也很简单,菜单Tools -> Plugins -> Available Plugins。
- VisualVM Extensions:对附加功能的支持(如新的JDK、JVM、HotSpot版本等),这些功能在VisualVM发布时其核心模块默认不支持。
- BTrace Workbench:一个用于Java平台的安全的、动态的跟踪工具。BTrace可以用于动态的跟踪一个运行中的Java程序(类似于DTrace,跟踪OpenSolaris应用程序和操作系统)。BTrace动态的实现化目标应用程序的类并且注入跟踪代码(字节码跟踪)。
- VisualVM-Security:在VisualVM中的SSL/TLS连接中,用于设置keystore(密钥库)、truststore(证书库)、协议和密码的图形界面。相当于设置适当的系统参数javax.net.ssl.*和javax.rmi.ssl.client.*。
- Threads Inspector:能够分析线程tab页中的一个或多个线程的堆栈跟踪。
- Startup Profiler:能够以仪表化的方式分析本地应用程序启动过程。有助于分析短时间运行的应用程序。
- VisualVM-JFR Streaming:支持与JDK17及以上版本绑定的JFR流的支持(必须在JDK17及以上版本上运行visualVM)。
- VisualVM-BufferMonitor:这个插件可以监控通过ByteBuffer.allocateDirect创建的直接缓冲区,以及通过FileChannel映射构建的映射缓冲区。
- VisualVM-TDA_Module:即Thread Dump Analyzer,线程转存分析。
- KillApplication:快速杀死本地运行的Java应用程序。
- VisualVM-Coherence:这个插件提供了一个图形用户界面,以及允许开发者查看运行中的Coherence集群。
- Tracer-Monitor Probes:提供与Monitor的tab页相同指标的跟踪探测器的集合。
- Tracer-Collections Probes:用于监控Java集合框架的跟踪探测器。
- Tracer-JavaFX Probes:提供多种指标用于监控JavaFX应用程序的运行时行为。
- Tracer-IO Probes:监控Java I/O调用的跟踪探测器。
- Tracer-Swing Probes:监控Swing和AWT框架的跟踪探测器。
- Tracer-Jvmstat Probes:新增的Jvmstat计数器。
- Tracer-JVM probes:监控JVM内部构件:JIT编译器、GC、NIO缓冲区以及Java I/O。
- OQL Syntax Support:提供语法高亮、符号匹配以及简单的代码补全。
- Visual GC:集成Visual GC工具到VisualVM中。可视化GC用户界面用于展示每一个本地或远程应用程序,通过由Jvmstat API提供的性能计数器。
- VisualVM-MBeans:集成JConsole的MBeans的Tab页中的功能到VisualVM中。
