使用OperatingSystemMXBean获取CPU使用率
我正在尝试使用Java获取当前正在运行的Java虚拟机使用的CPU百分比。我的研究指出我要使用com.sun.management.OperatingSystemMXBean
该类。通过在线示例,我编写了以下内容:
import java.lang.management.ManagementFactory;import com.sun.management.OperatingSystemMXBean;
public class TestClass {
public static void main (String[] args) {
OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(bean.getProcessCpuLoad());
System.out.println(bean.getSystemCpuLoad());
}
}
在两台计算机上对此进行测试后,我无法停止获得-1.0
两个调用的结果。我尝试通过各种方法使用Java
7和6的64位和32位版本运行此代码。不过,我得到的是打印出的-1.0
该,根据的Javadoc,
All values betweens 0.0 and 1.0 are possible depending of the activities
going on in the system. If the system recent cpu usage is not available, the
method returns a negative value.
我不知道还要在这里做什么。获取CPU负载至关重要,我想避免使用其他库,例如Sigar。有人对这个问题有任何建议或见解吗?
回答:
只是回答我自己的问题,以防有人帮忙。
从技术上讲,我所做的工作是正确的,但是我没有给OperatingSystemMXBean
足够的时间来收集CPU使用情况信息。JVM实际上必须运行几秒钟才能收集CPU使用情况信息,然后刷新分辨率似乎与实现有关。
经过以下更改运行代码将在大约2秒钟后开始在我的计算机上产生使用情况信息:
public static void main(String[] args) { OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean();
while (true) {
System.out.println(bean.getProcessCpuLoad());
System.out.println(bean.getSystemCpuLoad());
}
}
希望这可以帮助某人
以上是 使用OperatingSystemMXBean获取CPU使用率 的全部内容, 来源链接: utcz.com/qa/429818.html