Usando a API Sigar para obter o uso da CPU da JVM

Estou usando o Sigar para obter o uso da CPU da JVM atual em execução em um servidor de aplicativos e armazená-lo para visualização histórica desses dados, mas sempre obtenho 0% de porcentagem da CPU.

Enquanto isso, mantenho minha visualVM aberta para monitorar o uso da CPU, e vejo a porcentagem da CPU mudando periodicamente em visualVM enquanto ela sempre reporta 0% usando Sigar.

Aqui está o código que estou executando periodicamente:

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

Este código sempre dá 0%.

O que estou fazendo errado neste caso? Como posso obter Sigar para exibir o uso da CPU semelhante ao uso exibido no VisualVM?

Tentei adicionar

cpu.gather(sigar, pId);

depois de chamar getProcCpu (pid), mas eu continuo recebendo apenas dois valores (0.0 e 9.08729312E-315), mesmo se eu continuar aumentando e diminuindo a carga no servidor ...

questionAnswers(1)

yourAnswerToTheQuestion