jconsole查看连接数
我已经将JConsole用作合适的通用JMX客户端已有很多年了。 该工具通常随Oracle JDK一起提供,并且易于使用。 在JMX交互方面,JConsole优于VisualVM的最大优点是JConsole带有内置的MBeans选项卡,而必须为VisualVM中的相同功能应用插件。 但是,正如我在从JConsole到VisualVM的博客文章中所解释的那样,该插件易于安装。 在本文中,我将探讨一个区域,其中带有MBeans插件的VisualVM优于JConsole,它具有内置的MBeans支持: DiagnosticCommandMBean 。 我正在使用Oracle JDK(Java 8)随附的JConsole和VisualVM版本。
接下来的三个屏幕快照演示了如何通过JConsole访问DiagnosticCommandMBean
。 第一个图像显示有关DiagnosticCommandMBean
详细信息,例如其ObjectName ( com.sun.management:type=DiagnosticCommand
)。 第二幅图像说明JConsole允许用户通过单击操作的“ vmSystemProperties”按钮来查看VM的系统属性。 第三个图像演示了无法从JConsole调用DiagnosticCommandMBean
某些操作(在本例中为“ help”)。
如最后显示的图像所示,某些MBean操作被禁用。 这样做的原因是,如StackOverflow所述 ,“它们仅对采用简单类型的操作启用。” Andreas Veithen对此进行了详细说明 :“ JConsole [only]允许调用仅具有简单类型参数的方法。 这包括原始类型,原始类型的包装器类和字符串。 带有其他类型参数的方法不能被调用,因为JConsole不知道如何构造这些类型的实例。”
幸运的是,VisualVM的MBeans插件确实支持对DiagnosticCommandMBean的操作,该操作处理更复杂的数据类型。 通过VISUALVM-574 (“在MBeans插件中添加对DiagnosticCommandMBean的支持”)明确添加了此支持。 下一个屏幕快照描述了有关此插件的基本背景信息,可在VisualVM中通过单击工具->插件->可用插件-> VisualVM-MBeans获得。
下载并安装VisualVM-MBeans插件后,VisualVM将对DiagnosticCommandMBean
进行所有操作,如以下三个屏幕快照所示。 第一张图片显示所有操作均未“灰显”。 第二张和第三张图片显示“系统属性”和“帮助操作”均受支持。
在上面调用“ help”的示例中,我没有向其传递任何参数,因此在没有任何其他参数的情况下调用“ help”并返回给定Java进程可用的jcmd命令选项列表时,它的行为与jcmd完全相同。 下一个屏幕快照描述了这是如何工作类似于jcmd当我提供这些命令的名字之一,“帮助”操作参数(获取帮助的VM.uptime
在这种情况下)。
“ JDK 8中的工具增强功能”页面说明DiagnosticCommandMBean通过编程方式和远程方式使jcmd功能可用:“ JDK 8提供了对以前只能通过jcmd
工具在本地访问的诊断命令的远程访问。 使用Java管理扩展(JMX)提供了远程访问,因此诊断命令将向注册到平台MBean服务器的平台MBean公开。 MBean是com.sun.management.DiagnosticCommandMBean接口。” 用于JConsole / MBeans支持的VisualVM插件使用图形VisualVM工具的行为类似于在命令行中使用jcmd
。
这篇文章证明了DiagnosticCommandMBean
提供对jcmd
提供的相同数据的访问,以进行远程和编程访问,并且VisualVM提供了有用的图形界面,可通过VisualVM-MBeans插件利用DiagnosticCommandMBean
。
翻译自: https://www.javacodegeeks.com/2016/03/looking-diagnosticcommandmbean-jconsole-visualvm.html
jconsole查看连接数