获取有关JVM(Jboss)上运行的线程(cpu、内存)的信息和其他JVM信息
我想用java编写一个应用程序,它将获得JBossJVM上运行的进程和线程的信息(%cpu使用率、内存等)。我还想找到有关JVM(JBoss)中内存使用和其他重要内容的信息。如何用纯java编写它 我知道JConsole之类的东西,但我需要自己写。我发现java.lang.managament接口提供了一些关于系统、内存等的信息,但并没有提供所有需要的信息。例如,我希望有机会读取每个线程使用的cpu使用率(而不是cpu时间)和内存。(类似于bash中的top命令,但我需要用java实现它) 有什么帮助吗获取有关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实现它) 有什
编辑:最终我可以使用一些库来获取这些信息。正如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的图形工具。