Использование OperatingSystemMXBean для получения загрузки процессора
Я пытаюсь использовать Java, чтобы получить процент использования ЦП, используемый в данный момент виртуальной машиной Java. Мое исследование указало мне на использование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
который,в соответствии с Javadocs,
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.
Я не знаю, что еще здесь делать. Получение нагрузки на процессор очень важно, и я бы хотел избежать использования другой библиотеки, такой как Sigar. У кого-нибудь есть какие-либо рекомендации или есть понимание этой проблемы?