簡體   English   中英

如何在遠程JMX URL的Java中獲取所有垃圾收集器MX bean?

[英]How to get all garbage collector MX beans in java of a remote jmx URL?

我有一個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的列表?

您可以通過對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集合中加載了一個GarbageCollectorMXBean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM