我正在尝试使用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的结果.我尝试使用64位和32位版本的Java 7和6通过各种方法运行此代码.不过,我得到的只是-1.0的打印,according to the Javadocs,
根据系统中正在进行的活动,所有介于0.0和1.0之间的值都是可能的.如果系统最近的cpu使用率不可用,则该方法返回负值.
我不知道这里还能做什么.获得CPU负载至关重要,我想避免使用像Sigar这样的其他库.有人对此问题有任何建议或有任何见解吗?