gpt4 book ai didi

java - 如何通过 JMX 以编程方式访问内存使用情况?

转载 作者:太空狗 更新时间:2023-10-29 22:33:37 26 4
gpt4 key购买 nike

我正在寻找示例 Java JMX 代码以从另一个 VM 访问 JMX 属性的值。

使用 JConsole,我可以毫无问题地查看 java.lang/Memory/Attributes/HeapMemory

我如何从在 VM 中运行的 Java 程序获取相同的信息?

需要任何命令行选项的示例,或需要启动的其他内容。

最佳答案

您需要设置一个 JMXConnector。这是一个代码片段,它将获取远程计算机上已提交的堆内存使用情况。

String host ="myHost";
int port = 1234;
HashMap map = new HashMap();
String[] credentials = new String[2];
credentials[0] = user;
credentials[1] = password;
map.put("jmx.remote.credentials", credentials);
JMXConnector c = JMXConnectorFactory.newJMXConnector(createConnectionURL(host, port), map);
c.connect();
Object o = c.getMBeanServerConnection().getAttribute(new ObjectName("java.lang:type=Memory"), "HeapMemoryUsage");
CompositeData cd = (CompositeData) o;
System.out.println(cd.get("committed"));

private static JMXServiceURL createConnectionURL(String host, int port) throws MalformedURLException
{
return new JMXServiceURL("rmi", "", 0, "/jndi/rmi://" + host + ":" + port + "/jmxrmi");
}

如果您不关心安全性,您可以将 map 设置为空。您需要启动远程服务器;

-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

您可能想看看 wlshell这是一个小实用程序,允许您使用文本界面或脚本访问远程服务器上的 MBean,它可以与 WebLogic 一起使用,但它适用于您启用了远程监控的任何 Java 程序。

关于java - 如何通过 JMX 以编程方式访问内存使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com