2015-11-23 3 views
2

Я использую jdk7. Я пытаюсь получить общее использование процессора с помощью этого заявленияПолучить действительный getSystemCpuLoad()

System.out.println("getCpuUsage()" + " = " + operatingSystemMXBean.getSystemCpuLoad()); 

Значения Я получаю как

0.
0.054544 
0.0234243 
etc.. 

Использование ЦП в диспетчере задач я вижу, как 5%, 10%, 60 %,и т.д. Как я могу получить такое значение?

ответ

1

Вы должны умножить на 100 и преобразовать в целое, смотреть на JavaDocs:

Возвращает «недавнее использование центрального процессора» для всей системы. Это значение равно двойным в интервале [0.0,1.0]. Значение 0.0 означает, что все процессоры были свободны в течение последнего периода времени, а значение 1.0 означает, что все процессоры активно работали в течение 100% времени в течение наблюдаемого последнего периода. Все значения между 0.0 и 1.0 равны в зависимости от действий, происходящих в системе. Если система недавнего использования процессора недоступна, метод возвращает отрицательное значение .

Будьте осторожны с количеством CPU, которое у вас есть в вашей системе, так как оно является репрезентативным для всего процессора, доступного в вашей системе.

Взгляните на этот вспомогательный метод для масштабирования значение, которое вы получите в процентах:

public static short getLoadAndScaleToPercent(Method method, OperatingSystemMXBean osMxBean) { 
     if (method != null) { 
      try { 
       double load = (double) method.invoke(osMxBean); 
       if (load >= 0) { 
        return (short) (load * 100); 
       } 
      } catch (Throwable t) { 
       return -1; 
      } 
     } 
     return -1; 
    } 
4

Просто умножьте 100. Вы получите результат в процентах. Нажмите here для javadoc.

Смежные вопросы