Skip to content

JVisualVM可视化监控

官网

中文文档

使用方法

命令行执行

jvisualvm.exe

安装Visual GC插件

下载地址,插件列表

Tools -> Plugins -> Settings -> Add 输入

Visual GC

https://visualvm.github.io/uc/8u131/updates.html

image-20240211181222760

需要根据JDK版本选择插件地址

image-20240211181259828

image-20240211181404630

重启jvisualVM后

image-20240211181807875

监控远程Tomcat

在catalina.sh中添加

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=45000 -Dcom.sun.management.jmxremote.rmi.port=45000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIpv4Stack=true -Djava.rmi.server.hostname=101.200.39.203"

监控远程的Java进程

shell
nohup java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=45000 -Dcom.sun.management.jmxremote.rmi.port=45000 -un.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIpv4Stack=true -Djava.rmi.server.hostname=101.200.39.203 -jar -Dspring.profiles.active=prod wxserver-1.0.0.jar &

image-20240211183338133

远程不支持 Visual GC

功能清单

JVisualVM 是一个强大的Java性能分析工具,它是由Oracle公司开发的,并作为Java Development Kit (JDK)的一部分包含在内。该工具允许开发者和系统管理员对Java应用程序进行实时监控和故障排查,能够提供以下功能:

  1. 进程列表:自动显示本机上运行的所有Java应用程序,也可以通过远程连接监控其他机器上的Java虚拟机(JVM)。

  2. 概览信息:展示目标JVM的基本信息,包括启动参数、内存使用情况(堆、元空间、类加载等)、CPU占用率以及垃圾收集器活动等。

  3. 线程监控:查看当前所有线程的状态、线程堆栈信息,诊断死锁和其他并发问题。

  4. 内存分析:可以实时查看堆内存中对象的数量和大小,执行堆dump并分析内存泄漏,支持查看对象引用链(如查找GC Root)。

  5. CPU分析:监测方法级的CPU使用时间,帮助识别哪些方法消耗了大量CPU资源。

  6. 内存快照:通过比较不同的内存快照来定位潜在的内存泄漏问题。

  7. 采样和内存分析插件:提供了更深入的分析能力,比如内存分配采样,跟踪对象创建和销毁的过程。

  8. 远程监控与数据导出:支持远程监控Java应用,还可以将监控数据导出以供后续分析或共享。

需要注意的是,在某些较新的JDK版本中,可能需要单独下载并安装JVisualVM,因为它不再默认捆绑在JDK中。同时,对于不同JDK版本,JVisualVM的功能可能会有所增减或者界面有所不同。随着Java 9及以后版本的发展,原先一些工具的位置和集成方式发生了变化,可能需要额外配置才能完全利用JVisualVM的功能。