jconsole.exe 是 Java 平台提供的一个基于 JMX(Java Management Extensions,Java 管理扩展)的监控和管理工具。
它主要用于监视 Java 应用程序的性能和资源使用情况,包括但不限于以下方面:
内存监控:展示堆内存和非堆内存的使用情况,如已使用内存、最大内存等,并能观察内存的变化趋势。
线程监控:显示当前应用程序中的线程数量、线程状态(如运行、等待、阻塞等)。
类加载情况:查看类的加载和卸载数量。
CPU 使用情况:监测应用程序对 CPU 资源的占用情况。
运行环境信息:提供关于 Java 虚拟机(JVM)的版本、系统属性等相关信息。
通过 jconsole.exe,开发人员和运维人员可以实时了解应用程序的运行状况,及时发现可能存在的性能瓶颈和资源异常消耗等问题,以便采取相应的优化措施和故障排除手段。
要使用 jconsole.exe,需要先启动要监控的 Java 应用程序,并确保在启动命令中添加了适当的 JMX 相关参数以启用远程监控功能。然后在命令行中运行 jconsole.exe,在弹出的界面中选择要连接的本地或远程 Java 进程进行监控。
jconsole [ -interval=n ] [ -notile ] [ -puginpath <path> ] [ -version ] [ connection ... ]
-interval 将更新间隔设置为 n 秒 (默认值为 4 秒)
-notile 初始不平铺窗口 (对于两个或多个连接)
-pluginpath 指定 jconsole 用于查找插件的路径
-version 输出程序版本
connection = pid || host:port || JMX URL (service:jmx:<协议>://...)
pid 目标进程的进程 ID
host 远程主机名或 IP 地址
port 远程连接的端口号
-J 指定运行 jconsole 的 Java 虚拟机的输入参数
(1)查看 JConsole 的版本信息,如下:
D:\share_dir\ShareDoc> jconsole -version
运行命令,弹出如下界面:
(2)设置 JConsole 更新界面上的数据的时间间隔为 2 秒,JConsole 默认每隔 4 秒更新一次界面上显示的数据,例如:
D:\share_dir\ShareDoc> jconsole -interval=2
运行命令,弹出如下界面:
任意选择一个 Java 进程,显示效果图下图:
(3)默认情况下,如果你尝试同时打开多个 JConsole 窗口,它们可能会以平铺的方式显示。使用 -notile 选项可以避免这种情,用于在启动多个 JConsole 连接时不平铺窗口。如下:
D:\share_dir\ShareDoc> jconsole -notile
(4)使用 -pluginpath 选项指定 JConsole 用于查找插件的路径,JConsole 支持插件扩展其功能。如下:
D:\share_dir\ShareDoc> jconsole -pluginpath E:/plugins
注意:该选项你可以指定一个或多个路径,JConsole 将在这些路径中查找插件。
(5)使用 -J 选项,传递参数给运行 JConsole 的 Java 虚拟机。这可以用来设置 Java 虚拟机的各种选项,如堆大小、垃圾回收策略等。如下,设置最大堆大小为 1G:
D:\share_dir\ShareDoc> jconsole -J-Xmx1g
(6)连接示例:
连接到指定进程ID的 Java 进程,例如,连接到进程 ID 为 1234 的 Java 进程:
jconsole 1234
连接到远程 Java 进程的主机名和端口号(host:port),这通常用于连接到远程 JVM。端口号是在 JVM 启动时通过 -Dcom.sun.management.jmxremote.port=port 参数指定的。例如,连接到远程主机 localhost 的 9010 端口:
jconsole localhost:9010
JMX (Java Management Extensions) URL,用于连接到 JMX 服务。这通常是一个更复杂的 URL,用于指定 JMX 服务的协议、地址和端口等信息。例如,使用 JMX RMI 协议连接到远程服务:
jconsole service:jmx:rmi:///jndi/rmi://localhost:9010/jmxrmi
注意:在使用远程连接时,你还需要确保 JVM 已经启用了 JMX 远程连接,并且已经设置了正确的安全权限(如 SSL/TLS 和用户身份验证)。