Как выяснить использование процессора java-процессом в java

Я искал в Интернете возможность в java выяснить, сколько процессора нужно моему приложению, но, к сожалению, не смог найти решение. Большинство людей ссылались на «OperatingSystemMXBean», который работает на таких платформах, как Linux, но не на Windows. Мое приложение будет работать на нескольких ОС, но в основном на окнах. Итак, есть ли способ выяснить использование процессора java-приложением в той же среде выполнения, которая не зависит от платформы или поддерживает несколько платформ, включая Windows, Mac и Linux?

Спасибо
Башди


person Basti    schedule 22.03.2016    source источник
comment
Вы можете найти ответ здесь: stackoverflow.com/questions/16840594/   -  person Sason Ohanian    schedule 22.03.2016


Ответы (2)


Я не согласен с вашим утверждением. OperatingSystemMXBean доступен в Windows. Просто это немного скрыто. Будьте осторожны с импортом пакетов. Eclipse не предлагает его по умолчанию.

 import java.lang.management.ManagementFactory;
 import com.sun.management.OperatingSystemMXBean;

 public class Test {

 public static void main(String[] args) {
     OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
     System.out.println(operatingSystemMXBean.getProcessCpuLoad());
}}

Если вы запустите этот отрывок, вероятно, вы получите 0.0.0. Это не неисправность. Это очень легкая программа, и расчет загрузки процессора может занять некоторое время. Вы можете получить -1 при первом вызове. Попробуйте это в своем приложении, восстанавливая значение в разные моменты времени.

Если не ошибаюсь, этот класс входит в rt.jar. Вы можете столкнуться с некоторыми проблемами при импорте пакета в Eclipse IDE. Здесь вы можете найти объяснение и как это исправить. Почему доступ ограничен jre6/lib/rt .jar для OperatingSystemMxBean?

person RubioRic    schedule 22.03.2016
comment
Это отлично работало для окон. Спасибо за ответ. Любые предложения о других операционных системах? Мне нужно поддерживать как минимум Windows, Mac и Linux. Доступен ли на них com.sun.management.OperatingSystemMXBean и работает ли он? Кроме того, я использую jdk8 для создания этого проекта, поэтому я даже не получил ограничения - person Basti; 23.03.2016
comment
Ограничение появляется только как предупреждение, если вы разрабатываете свой код с помощью Eclipse IDE. Я думаю, что этот компонент доступен в этих операционных системах. Я правильно протестировал его в Unix, но не в Mac, но он включен в среду выполнения Java. Если вы можете выполнить код Java, он у вас есть. - person RubioRic; 23.03.2016

Это хорошо работает в Windows 10. Измерение использования процессора Skype:

c:\Windows\system32\typeperf "\Process(Skype)\% processor time"
person Sason Ohanian    schedule 22.03.2016
comment
Извините, но я попросил независимый от платформы способ выяснить использование процессора java-приложением в java. Это не тихий ответ, который я искал - person Basti; 23.03.2016