Java Management API获取CPU使用率

时间:2016-10-30 14:56:15

标签: java

我想在我的应用程序中监控系统指标。我使用的是Spring Boot Actuator,但它没有任何CPU使用率指标。我知道Spring Boot Actuator的这些指标从这里检索:

OperatingSystemMXBean

它有以下方法:

getSystemLoadAverage
getAvailableProcessors

还有另一个课程:

MemoryUsage

您可以在其中检索此类指标:

getUsed
getCommitted

但是我在java.lang.management看不到Java应用程序的CPU使用率的任何指标。我怎样才能找回它?

2 个答案:

答案 0 :(得分:1)

您正在讨论java.lang.management包的OperatingSystemMXBean类。 com.sun.management包中有相同的名称类。 在这个类中,关于cpu info的方法很少:

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,你可能会遇到一些关于访问限制的问题,如果发生这种情况你可以轻松地修复它in this way

答案 1 :(得分:0)

只是建议,我认为我们不应该在我们的应用程序中使用测量,只是因为除了我们的应用程序的工作量,还有测量的工作量,因此结果不再是 在这种情况下,Jconsole或Visualvm是您可以关注的绝佳外部工具。不仅是springboot,还可以测量所有java应用程序类型。