Java 工具集教程

jconsole.exe Java监视和管理控制台

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

运行命令,弹出如下界面:

image.png

(2)设置 JConsole 更新界面上的数据的时间间隔为 2 秒,JConsole 默认每隔 4 秒更新一次界面上显示的数据,例如:

D:\share_dir\ShareDoc> jconsole -interval=2

运行命令,弹出如下界面:

image.png

任意选择一个 Java 进程,显示效果图下图:

image.png

(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 和用户身份验证)。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号