前面我们已经讲了 JVM 性能监控工具之命令行篇,本篇我们来介绍一些可视化的性能监控工具,包括 JConsole、VisualVM、Java Mission Control 等,阿里的 Arthas 我们留到后面单独去讲。
可视化工具比命令行工具强大的地方就在于这些工具提供了更直观、更易于理解的性能数据视图,肉眼看上去,脑子就能快速 get 到问题所在,那这篇就来带大家看看这些工具的强大之处。
JConsole
JConsole(Java Monitoring and Management Console),是一款基于 JMX(Java Manage-ment Extensions)的可视化监视管理工具。
JMX 的全称是 Java Management Extensions,翻译过来就是 Java 管理扩展,既是 Java 管理系统中的一个标准,一个规范,也是一个接口,一个框架。JConsole 就相当于是 JMX 的一个实现类。
JConsole 可以用来监视 Java 应用程序的运行状态,包括内存使用、线程状态、类加载、GC 等,还可以进行一些基本的性能分析。
JConsole 连接 Java 程序
JConsole 程序位于%JAVA_HOME%bin 目录下,不过我当前的操作系统是 macOS,和 Windows 有一些不一样,我就不再刻意截 Windows 的图了,希望大家可以理解。
直接启动 JConsole,会弹出一个窗口,显示本机正在运行的 Java 程序,选择一个程序(比如说技术派的 28966),点击连接即可。
还可以进行远程链接,比如说对服务器上的 Java 程序进行监控,需要远程服务器上的 Java 程序在启动的时候加上以下这些参数:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
是您想要 JMX 代理监听的端口号,例如 9999。- authenticate=false 表示不需要身份验证来连接到 JMX(注意:这在生产环境中可能不安全)。
- ssl=false 表示不需要使用 SSL 加密连接(同样,这在生产环境中可能不安全)。
Java 程序概况
使用 JConsole 连接了一个本地程序,在概述可以看到 Java 程序的运行时概况,包括堆内存使用量、线程、类、CPU占用率四项信息的曲线图。
内存监控
内存的作用相当于可视化的 jstat 命令(上一节讲过了),用于监视 Java 堆的使用情况,可以更细化到 eden 区、suvivior 区、老年代的使用情况。
为了更加清晰地查看内存变化,可以运行下面这段,然后连接:
真诚点赞 诚不我欺
回复