Использование Sigar API для получения загрузки процессора JVM

Я использую Sigar, чтобы получить информацию о загрузке ЦП текущей запущенной JVM на сервере приложений и сохранить ее для исторического просмотра этих данных, но я всегда получаю 0% загрузки ЦП.

В то же время я держу свой VisualVM открытым для мониторинга использования процессора, и я вижу, как периодически% CPU изменяется в visualVM, в то время как он всегда сообщает 0% с помощью Sigar.

Вот код, который я периодически запускаю:

Sigar sigar = new Sigar();
ProcCpu cpu = null;
long pId = sigar.getPid(); // This one gives me the same process ID that I see in visualVM
try {
    cpu = sigar.getProcCpu(pId);

} 
catch (SigarException se) {
    se.printStackTrace();
}
System.out.print(cpu.getPercent());

Этот код всегда дает 0%.

Что я делаю не так в этом случае? Как я могу заставить Sigar отображать загрузку процессора, аналогичную загрузке, отображаемой в VisualVM?

Я пытался добавить

cpu.gather(sigar, pId);

после вызова getProcCpu (pid), но я продолжаю получать только два значения (0.0 и 9.08729312E-315), даже если я продолжаю увеличивать и уменьшать нагрузку на сервер ...

Ответы на вопрос(1)

Ваш ответ на вопрос