Użycie Sigar API do użycia procesora JVM

Używam Sigara, aby uzyskać wykorzystanie procesora bieżącej działającej maszyny JVM na serwerze aplikacji i przechować ją do widoku historycznego tych danych, ale zawsze otrzymuję 0% procentu procesora.

W międzyczasie trzymam mój visualVM otwarty do monitorowania wykorzystania procesora i widzę, że procent CPU zmienia się okresowo w visualVM, podczas gdy zawsze zgłasza 0% używając Sigara.

Oto kod, który uruchamiam okresowo:

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());

Ten kod zawsze daje 0%.

Co robię źle w tym przypadku? Jak mogę sprawić, by Sigar wyświetlał użycie procesora podobne do użycia w VisualVM?

Próbowałem dodać

cpu.gather(sigar, pId);

po wywołaniu getProcCpu (pid), ale otrzymuję tylko dwie wartości (0.0 i 9.08729312E-315), nawet jeśli ciągle zwiększam i zmniejszam obciążenie serwera ...

questionAnswers(1)

yourAnswerToTheQuestion