Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java管理API获取CPU使用率_Java - Fatal编程技术网

Java管理API获取CPU使用率

Java管理API获取CPU使用率,java,Java,我想在我的应用程序中监控系统指标。我使用Spring启动执行器,但它没有任何CPU使用指标。我知道Spring Boot Actuator的这些指标是从这里获取的: OperatingSystemMXBean 它有如下方法: getSystemLoadAverage getAvailableProcessors 还有一类: MemoryUsage 您可以在其中检索这些度量: getUsed getCommitted 但是,我在Java.lang.management上看不到Java应用程

我想在我的应用程序中监控系统指标。我使用Spring启动执行器,但它没有任何CPU使用指标。我知道Spring Boot Actuator的这些指标是从这里获取的:

OperatingSystemMXBean
它有如下方法:

getSystemLoadAverage
getAvailableProcessors
还有一类:

MemoryUsage
您可以在其中检索这些度量:

getUsed
getCommitted

但是,我在
Java.lang.management
上看不到Java应用程序CPU使用的任何指标。如何检索它?

您所说的是操作包的SystemMXBean类。 包中有相同名称的类。 在这个类中,有几个关于cpu信息的方法:

double  getProcessCpuLoad()
long    getProcessCpuTime()
double  getSystemCpuLoad()
这是访问bean和检索cpu负载信息的代码:

import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;

OperatingSystemMXBean bean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(bean.getProcessCpuLoad());
请注意,强制转换是必要的,因为您需要的类在java.sun.management包中,而不是在java.lang.management中。
如果您使用eclipse,您可能会遇到访问限制方面的一些问题,如果出现这种情况,您可以轻松解决。

只是建议,我认为我们不应该在应用程序内部使用度量,因为除了应用程序的工作负载之外,还有度量的工作负载,因此结果不再准确

在这种情况下,Jconsole或Visualvm是非常好的外部工具。不仅可以测量springboot,还可以测量所有java应用程序类型。

?@Andrewi SystemCpuLoad是否等于getSystemLoadAverage/getAvailableProcessors?否。
getSystemCpuLoad
返回整个系统最近的CPU使用情况。查看副本实际上,我需要当前Java应用程序的CPU使用率,就像堆使用率一样。这就是为什么我需要一个不同于复制的解决方案。
getProcessCpuLoad()
我有一些微服务,我的一个应用程序是一个监控其他应用程序的仪表板。