在JConsole和VisualVM中查看DiagnosticCommandMBean

我已经将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详细信息,例如其ObjectNamecom.sun.management:type=DiagnosticCommand )。 第二幅图像说明JConsole允许用户通过单击操作的“ vmSystemProperties”按钮来查看VM的系统属性。 第三个图像演示了无法从JConsole调用DiagnosticCommandMBean某些操作(在本例中为“ help”)。

jconsoleDiagnosticCommandMBean

jconsoleDiagnosticCommandMBeanVMSystemProperties

jconsoleDiagnosticCommandMBeanHelp

如最后显示的图像所示,某些MBean操作被禁用。 这样做的原因是,如StackOverflow所述 ,“它们仅对采用简单类型的操作启用。” Andreas Veithen对此进行了详细说明 :“ JConsole [only]允许调用仅具有简单类型参数的方法。 这包括原始类型,原始类型的包装器类和字符串。 带有其他类型参数的方法无法调用,因为JConsole不知道如何构造这些类型的实例。”

幸运的是,VisualVM的MBeans插件确实支持针对DiagnosticCommandMBean的处理更复杂数据类型的操作。 通过VISUALVM-574 (“在MBeans插件中添加对DiagnosticCommandMBean的支持”)明确添加了此支持。 下一个屏幕快照描述了有关此插件的基本背景信息,可在VisualVM中通过单击工具->插件->可用插件-> VisualVM-MBeans获得。

jconsolePluginForVisualVM

下载并安装VisualVM-MBeans插件后,VisualVM将对DiagnosticCommandMBean进行所有操作,如以下三个屏幕快照所示。 第一张图片显示所有操作均未“灰显”。 第二张和第三张图片显示“系统属性”和“帮助操作”均受支持。

visualVM-MBeans-OperationsAll可用

visualVM-MBeans-DiagnosticCommand-SystemProperties

visualVM-MBeans-DiagnosticCommand-HelpSansArgument

在上面调用“ help”的示例中,我没有向其传递任何参数,因此在没有任何其他参数的情况下调用“ help”并返回给定Java进程可用的jcmd命令选项列表时,它的行为与jcmd完全相同。 下一个屏幕快照描述了这是如何工作类似于jcmd当我提供这些命令的名字之一,“帮助”操作参数(获取帮助的VM.uptime在这种情况下)。

visualVM-MBeans-DiagnosticCommand-HelpVMUptimeArgument

“ 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人人商城生成app教程_人人商城APP打包教程(APICLOUD版)

一.APP环境搭建和配置编译1.登录APICLOUD后台新建应用step1 注册账号注册apicloud 账号并登录APICLOUD控制台step2 新建应用再账户下面找到开发控制台>开发控制台>创建应用 填写应用名和说明,必选Native App创建Native App2 .开发工具下载安装APICLOUD开发工具…

WPF快速入门系列(2)——深入解析依赖属性

一、引言 感觉最近都颓废了,好久没有学习写博文了,出于负罪感,今天强烈逼迫自己开始更新WPF系列。尽管最近看到一篇WPF技术是否老矣的文章,但是还是不能阻止我系统学习WPF。今天继续分享WPF中一个最重要的知识点——依赖属性。 二…

圆台下料展开计算方法_怎么画 圆锥台展开图

展开全部1、 画出圆台的主视抄图(等腰梯形)袭:圆台的上bai下底直径为等腰梯形du的上zhi下底,圆台的高为等dao腰梯形的高;2、将等腰梯形补画成等腰三角形;(图中的虚线三角形即为补画部分);3、以三角形的顶点为圆心&…

junit rule_Tomcat上下文JUnit @Rule

junit rule创建测试上下文的JUnit Rule的初稿。 这可以用Spring上下文规则可用于 这个帖子 创建集成测试一个完整的Spring上下文。 import org.apache.commons.dbcp.BasicDataSource; import org.apache.log4j.Logger; import org.junit.rules.TestRule; import org.junit.runn…

.31-浅析webpack源码之doResolve事件流(3)

放个流程图: 这里也放一下request对象内容,这节完事后如下(把vue-cli的package.json也复制过来了): /*{ context: { issuer: , compiler: undefined },path: d:\\workspace\\doc,request: ./input.js,query: ,module: false,directory: false…

mysql数据库txt备份linux_linux备份mysql数据库

MYSQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据。1、创建备份文件夹#cd /www#makedir backup2、编写运行脚本#vi autobackup写入以下内容:filenamedate %Y%m%dmysql_bin…

python序列操作函数有哪些_Python笔记--序列操作函数

1All():判断给出的可迭代参数iterable中所有元素是否均为true,是则返回true,否则返回false。注:除了0,空,False外都算作true。空元组,空列表返回true。语法:all(iterable)参数&#…

c++ 虚函数,纯虚函数的本质区别

转载博客:https://mp.weixin.qq.com/s?__bizMzAxNzYzMTU0Ng&mid2651289202&idx1&sn431ffd1fae4823366a50b68aed2838d4&chksm80114627b766cf31f72018ef5f1fe29591e9f6f4bd72018e7aea849342ca6f0a271fb38465ae#rd 学习C的多态性&…

mysql数据库常用名词_【千寻】MySQL数据库名词注释(持续更新)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼MySQL 数据库名词注释↓account 帐号数据库my 角色信息数据库mysql mysql用户数据库accountmy这两个数据库可能合并为一个数据库 比如 my my1 top top1 ... 这种类似account表打开后列 id 这个是数据库默认递增的id 不可随便列…

spring jmx_JMX和Spring –第3部分

spring jmx本文是本系列的最后一篇。 看一下第1 部分和第2部分 。 在本系列的最后一篇文章中,我将展示如何在JDK中使用本机JMX支持来实现一种通知机制,该机制可以在HEAP内存超过特定阈值时向侦听器发出警报。 正如我在上一篇文章中讨论的那样&#xff0…

云通讯短信验证码实例

1.注册登录云通讯 http://www.yuntongxun.com/user/login 2.创建应用得到应用相关信息 3.下载对应相关的Demo示例  http://www.yuntongxun.com/doc/rest/sms/3_2_2_3.html 4.send.php文件添加代码方便后续操作 session_start(); //随机验证码 $code rand(100000,999999)…

java 数组 内存_图解Java数组的内存分配

1. Java数组是静态的Java是静态语言,所以Java的数组也是静态的,即:数组被初始化后,长度不可变静态初始化:显式指定每个数组元素的初始值,系统决定数组长度String[] books new String[]{"疯狂Java讲义…

libgdx和Kotlin –类[2D平台原型]

这篇文章是libgdx和Kotlin文章的后续文章。 我已经决定开发一个简单的2D平台程序的原型(沿着我的早期文章中的Star Assault进行介绍),但是我一直在使用和学习Kotlin,而不是Java。 对于本教程,该项目应处于上一篇文章…

Python 基础 - 4.3 random模块

程序中有很多地方需要用到随机字符,比如登录网站的随机验证码,通过random模块可以很容易生成随机字符串 >>> random.randomrange(1,10) #返回1-10之间的一个随机数,不包括10 >>> random.randomint(1,10) #返回1-10之间的一…

java中的方法在哪里_Java中的本机方法是什么,应在哪里使用?

小编典典Java中的本机方法是什么,应在哪里使用?一旦看到一个小例子,就很清楚了:Main.java :public class Main {public native int intMethod(int i);public static void main(String[] args) {System.loadLibrary(&qu…

python下载大文件

1. wget def download_big_file_with_wget(url, target_file_name):"""使用wget下载大文件Note: 需要系统安装wget"""import osimport subprocessdownload_process subprocess.Popen(["wget", "-c", "-O", targe…

spring jmx_JMX和Spring –第2部分

spring jmx这篇文章从本教程的第1部分继续。 嗨,在我的上一篇文章中,我解释了如何通过Spring设置JMX服务器以及如何通过身份验证和授权保护对它的访问。 在本文中,我将展示如何实现一个简单的MBean,该MBean允许用户在运行时更改L…

java callable用法_在Java中使用Callable和Future

最近,我们正在开发一个监控仪表板,我们想要ping几个第三方服务器,只是为了检查它们的可用性,或者我们想要调用健康检查。我们正在对服务器进行一系列api调用,这些服务器的IP,用户名和密码被外部化为环境变量…

注意Java 8的[Pri​​mitive] Stream.iterate()中的递归

Tagir Valeev关于Stack Overflow的一个有趣问题最近引起了我的注意。 为了简短起见&#xff08;请阅读问题的详细信息&#xff09;&#xff0c;而以下代码则有效&#xff1a; public static Stream<Long> longs() {return Stream.iterate(1L, i ->1L longs().skip(i…

用java编写生产者消费者问题_用java代码实现生产者和消费者的问题

public class ThreadDemo12 {public static void main(String[] args) {goods gnew goods();Product pronew Product(g);Thread th1new Thread(pro);th1.start();Customer cusnew Customer(g);Thread th2new Thread(cus);th2.start();}}/*** 商品类* author Al菜菜**/class goo…