根据进程id获得本地Java应用的JMX 属性

2023-11-01


1. Getting the Service URL

When the local management agent is started, it publishes the service URL (which also contains the serialized stub for communication – take a look at the URL, it’s really quite funny) in a well known location. This can be retrieved by using the sun.management.ConnectorAddressLink (this class can be found in java basic librt.jar) class like this:

private static JMXServiceURL getLocalStubServiceURLFromPID(int pid)
        throws IOException {
    String address = ConnectorAddressLink.importFrom(pid);
    if (address != null) {
        return new JMXServiceURL(address);
    }
    return null;
}

If you didn’t get any service url, then the local management agent was not started.

2. Starting the Local Management Agent

Starting the local management agent can be done in various ways. In late versions of the JDK this is quite easily done. I am only going to show you the simple way today. In older you might need to resort to the attach command to load java agents (VirtualMachine vm = VirtualMachine.attach(pid).loadAgent(<path to management-agent.jar>,”com.sun.management.jmxremote”)).

To start the local agent, we simply execute the diagnostic command for starting it:

…

executeCommandForPID(vm, pid, “ManagementAgent.start_local”);

…

private static void executeCommandForPID(VirtualMachine vm, String pid,
        String cmd) throws IOException {
    HotSpotVirtualMachine hsvm = (HotSpotVirtualMachine) vm;
    hsvm.executeJCmd(cmd);
}


3. Opening the MBeanServer Connection

This, as well as doing the MBeany things you want to do once you have the connection, is done just as you would normally do it:

JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection connection = jmxc.getMBeanServerConnection();

Getting attributes:

connection.getAttribute(“java.lang:type=Memory”, “HeapMemoryUsage”);


 



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据进程id获得本地Java应用的JMX 属性 的相关文章

  • MySQL性能监控

    MySQL数据库监控一般主要关注连接数 缓存 事务和锁 慢查询等几项指标 1 MySQL连接数 MYSQL数据库默认最大连接数是100 然而对于流量稍微大一点的论坛或网站这个连接数是远远不够的 当并发数过大的时候会出现连接数不够用 使得很多
  • C++11中std::future的使用

    C 11中的std future是一个模板类 std future提供了一种用于访问异步操作结果的机制 std future所引用的共享状态不能与任何其它异步返回的对象共享 与std shared future相反 std future r
  • Java ImageIO 图片背景变成透明

    import java awt Color import java awt Graphics2D import java awt Transparency import java awt image BufferedImage import
  • ARMv7架构学习

    本文参考至ARM的官方手册 ARM Architecture Reference Manual ARMv7 A and ARMv7 R edition 文章目录 0 ARM概念 1 ARM的基本设定 2 ARM处理器的工作模式 1 有哪些模

随机推荐

  • 真的!千万不要忽略这些python常见报错信息

    在使用Python时 作为萌新的我总是会粗心的掉这掉那 运行时就会出现各式各样的错误 因此写这么一篇博客 来总结下编写代码的一些常见错误以及解决办法 有什么python相关报错解答自己不会的 或者源码资料 模块安装 女装大佬精通技巧 都可以
  • AngularJS Documents 官方英文文档

    AngularJS是个好东西 尤其在写交互性需求较多的页面时 用于移动端html5开发也很有用 但是很遗憾 被墙了 查api文档很麻烦 好在GitHub上开源了其全部文档 直接check下来 结果发现直接双击doc下的index html是
  • DrawerLayout 在Remove了以后重新Add的时候可能出现openDrawer卡住的问题

    之前做项目的时候 发现如果在DrawerLayout布局中 如果要Remove掉这个View 然后重新Add 期间有做动画 就会发现在调用openDrawer会卡住一会再打开 找了很久然后发现 openDrawer有下面这个方法 注意 mF
  • Python时间日期操作大全

    Python时间和日期操作需要用到datetime和time标准库模块 一 time模块 1 time模块表示时间的方式 时间戳 格式化的时间字符串 以数组的形式表示 即 struct time 共有九个元素 year four digit
  • 测绘涉密证怎么办理,有什么作用?想办理测绘资质,测绘涉密证必不可缺!简单介绍几种吧,看看有没有你们适用的

    测绘涉密证有多种 简单介绍几种吧 看看有没有你们适用的 1 地理信息安全保密培训合格证书 是由国家基础地理信息中心发证的 适用于测绘资质申请 地理信息安全审查 测绘资质单位保密安全审查 项目招投标中加分等 2 涉密测绘成果管理人员岗位培训证
  • Xcode Build System

    Xcode Build System iOS开发者都使用Xcode来开发 编译程序 但是我们真正了解xcode是怎样编译我们的程序到手机上的么 下面我们主要看看xcode的编译系统内容 一 Preprocessor 预处理 在此步骤中xco
  • 对比数据库DDL差异

  • 使用K-均值聚类进行市场细分:R语言机器学习实战

    目录 引言 基础知识 准备工作 数据预处理 确定最佳的K值 模型训练
  • 使用redis做消息队列

    文章目录 前言 代码展示 前言 目前项目中有一项耗时操作 使用华为OBS做文件存储服务 有点类似minio 使用永中做在线预览 读取OBS中的office类文件 因为现在架构里并没有集成mq 所以使用redis做消息队列 代码展示 定时消费
  • Python_类的组合

    A类与B类之间没有共同点 但是A类与B类之间有关联 比如说 医院类与患者类是两个完全不同的类 他们之间没有任何关联 但是患者是属于医院的 此时我们就要用到类的组合来关联医院类与患者类 详细操作详见下图 该部分代码为 class Hospit
  • Qt QTableWidget 样式表

    QHeaderView QTableWidget 标题头整个区域 background transparent 整个标题头区域背景色 QHeaderView section 标题头 每个单独的标题区域 font size 14px 每个标题
  • IDEA 配置Tomact服务器

    1 下载zip版的Tomcat 6 并解压 2 在IDEA中配置Tomcat 6 在idea中的Settings Ctrl Alt s 或者点击图标 弹出窗口左上过滤栏中输入 Application 选择结果中的 Application S
  • 嵌入式视觉将成为划时代的产品

    随着PC 手机和互动游戏的出现 电脑视觉才走进消费性电子产品而为普通大众所熟悉 最近几年AI和微处理器的发展 更是极大地推动了电脑视觉在各个应用领域的发展 尤其是嵌入式视觉 Embedded Vision 引起了业界的特别关注 HAL 90
  • tflearn教程_环境部署——Windows下安装配置tensorflow和tflearn

    原标题 环境部署 Windows下安装配置tensorflow和tflearn 本例依赖Windows 7 x64位系统 由于Tensorflow依赖于Python 以及大量的相关依赖包 为了免除大量依赖包的安装 选择安装Anaconda集
  • visio的使用技巧

    一 调节箭头方向 1 打开你要修改的Microsoft Visio文件 2 选中你要修改的箭头 在上方的开始工具栏中找到 线条 选项 鼠标左键单击打开 3 在下面找到 箭头 这个选项 鼠标移到上面去 就会展开 带阴影的就是你现在用的箭头 如
  • 向上汇报工作,需要注意哪些事项?

    导言 向上级汇报工作是每个员工必须面对的重要任务之一 良好的向上汇报可以提高上级对工作的了解和认可 促进组织的顺利发展 本文将分享一些成功向上汇报工作的关键事项 以助您在向上级汇报时取得更好的效果 一 明确目标和观众 在向上级汇报工作之前
  • java——spring boot集成RabbitMQ——高级特效——封装消息的元数据

    交换机和队列支持持久化 现在我们也需要给消息设计元数据 DeliveryMode 设置为2 表示支持消息的持久化 接上一边博文 修改文件 发送者 package org example sender import org springfra
  • JSP页面报错,将jsp-api.jar加入到类路径

    将jsp api jar加入到类路径
  • OpenCV-Python实战(19)——OpenCV与深度学习的碰撞

    OpenCV Python实战 19 OpenCV与深度学习的碰撞 0 前言 1 cv2 dnn blobFromImage 函数详解 2 OpenCV DNN 人脸检测器 3 OpenCV 图像分类 3 1 使用 AlexNet 进行图像
  • 根据进程id获得本地Java应用的JMX 属性

    1 Getting the Service URL When the local management agent is started it publishes the service URL which also contains th