Nam*_*man 2 java garbage-collection jmx mbeans
我有一个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;
Run Code Online (Sandbox Code Playgroud)
这里的问题是我没有定义名称而只定义类型,所以它给出了异常.所以我的名字也如下: -
return ManagementFactory.newPlatformMXBeanProxy(conn, ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE+",name=PS MarkSweep", GarbageCollectorMXBean.class);
Run Code Online (Sandbox Code Playgroud)
但在这里我有硬编码"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));
}
Run Code Online (Sandbox Code Playgroud)
现在gcBeans集每个Garbage Collector加载一个GarbageCollectorMXBean.
归档时间: |
|
查看次数: |
1362 次 |
最近记录: |