javacpucpu-usagecpu-speedmxbean

Alternate of getSystemLoadAverage() for Windows?


I am working on with some code to monitor Cpu load using Java. I am using following code in my app to get system load

public static double getCPULoad() {
    OperatingSystemMXBean osMBean
                = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();

    double load = osMBean.getSystemLoadAverage();
    return load;
}

But on windows it returns me a negative value (-1.0). Is there any way i can solve this problem?


Solution

  • Please read this blog. It's not an official solution but when using com.sun.management.OperatingSystemMXBean instead of java.lang.management.OperatingSystemMXBean there are two methods getSystemCpuLoad() and getProcessCpuLoad() that are working.