如何在远程jmx URL的java中获取所有垃圾收集器MX bean?

 明天会更好--好过_652 发布于 2023-01-19 21:00

我有一个jmx远程URL,我想获得它通过jmx公开的所有GC相关信息.我使用以下代码:

MBeanServerConnection conn = getMBeanServerConnection(url);
        if (conn != null)
            return ManagementFactory.newPlatformMXBeanProxy(conn, ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE, GarbageCollectorMXBean.class);
return null;

这里的问题是我没有定义名称而只定义类型,所以它给出了异常.所以我的名字也如下: -

    return ManagementFactory.newPlatformMXBeanProxy(conn, ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE+",name=PS MarkSweep", GarbageCollectorMXBean.class);

但在这里我有硬编码"PS MarkSweep".但是JVM可能正在使用"ConcurrentMarkSweep".如何获取所有GC MBean的列表?

1 个回答
  • 您可以通过对MBeanServerConnection发出MBean查询来执行此操作,如下所示:

    MBeanServerConnection mbs = ManagementFactory.getPlatformMBeanServer();
    Set<ObjectName> gcnames = mbs.queryNames(new ObjectName(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE + ",name=*"), null);
    Set<GarbageCollectorMXBean> gcBeans = new HashSet<GarbageCollectorMXBean>(gcnames.size());
    for(ObjectName on: gcnames) {
        gcBeans.add(ManagementFactory.newPlatformMXBeanProxy(mbs, on.toString(), GarbageCollectorMXBean.class));
    }
    

    现在gcBeans集每个Garbage Collector加载一个GarbageCollectorMXBean.

    2023-01-19 21:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有