获取有关JVM(Jboss)上运行的线程(cpu、内存)的信息和其他JVM信息

获取有关JVM(Jboss)上运行的线程(cpu、内存)的信息和其他JVM信息,jboss,jvm,cpu,usage-statistics,Jboss,Jvm,Cpu,Usage Statistics,我想用java编写一个应用程序,它将获得JBossJVM上运行的进程和线程的信息(%cpu使用率、内存等)。我还想找到有关JVM(JBoss)中内存使用和其他重要内容的信息。如何用纯java编写它 我知道JConsole之类的东西,但我需要自己写。我发现java.lang.managament接口提供了一些关于系统、内存等的信息,但并没有提供所有需要的信息。例如,我希望有机会读取每个线程使用的cpu使用率(而不是cpu时间)和内存。(类似于bash中的top命令,但我需要用java实现它) 有什

我想用java编写一个应用程序,它将获得JBossJVM上运行的进程和线程的信息(%cpu使用率、内存等)。我还想找到有关JVM(JBoss)中内存使用和其他重要内容的信息。如何用纯java编写它

我知道JConsole之类的东西,但我需要自己写。我发现java.lang.managament接口提供了一些关于系统、内存等的信息,但并没有提供所有需要的信息。例如,我希望有机会读取每个线程使用的cpu使用率(而不是cpu时间)和内存。(类似于bash中的top命令,但我需要用java实现它)

有什么帮助吗


编辑:最终我可以使用一些库来获取这些信息。

正如Adam所说,有几种工具可以监控java/jboss资源的使用,另一种是


但是如果您真的需要自己编程,那么您可能会在访问jboss.system:type=ServerInfo mbean时发现一些有用的信息(检查它的属性和方法:listMemoryPools、listThreadCpuUtilization、listThreadDump…)。您可以使用JMX控制台或通过编程方式访问它们。

JBossAS7提供了不同的管理界面。所有管理接口都基于非类型化管理表示(jboss dmr)

您可以使用jboss dmr库和jboss作为控制器客户端来实现自定义Java客户端。有关示例,请参见我们的

要获取有关JVM和其他内容的信息,您需要实现以下操作:

ModelNode operation = new ModelNode();
operation.get("operation").set("read-resource");
operation.get("recursive").set(true);
operation.get("include-runtime").set(true);
ModelNode address = operation.get("address");
address.add("core-service", "platform-mbean");
或者,您也可以使用PlatformMBeanServer:

    //Get a connection to the JBoss AS MBean server on localhost
    String host = "localhost";
    int port = 9999;  // management-native port
    String urlString = "service:jmx:remoting-jmx://" + host + ":" + port;
    JMXServiceURL serviceURL = new JMXServiceURL(urlString);
    JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceURL, null);
    MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();

    //Invoke on the JBoss AS MBean server
    connection.getObjectInstance(new ObjectName("java.lang:type=Threading"));
    //...
    jmxConnector.close();

你可以试试Java Melody。它是监视Java应用程序的一个非常好的工具。查看下面链接处的工具


-苏什塔

“需要自己写吗”。。。?你听说过visualvm吗?正如我所看到的,visualvm是一个带有图形图表的应用程序。我需要在java代码和输出操作必须在纯文本。Visualvm是带有gui的图形工具。