Usando la API de Sigar para obtener el uso de la CPU JVM

Estoy usando Sigar para obtener el uso de la CPU de la JVM actual en un servidor de aplicaciones y almacenarlo para una vista histórica de estos datos, pero siempre obtengo un porcentaje de CPU del 0%.

Mientras tanto, mantengo mi visualVM abierto para monitorear el uso de la CPU, y puedo ver que el% de la CPU cambia periódicamente en visualVM, mientras que siempre informa que el 0% usa Sigar.

Aquí está el código que estoy ejecutando periódicamente:

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 siempre da 0%.

¿Qué estoy haciendo mal en este caso? ¿Cómo puedo hacer que Sigar muestre un uso de CPU similar al uso que se muestra en VisualVM?

Intenté agregar

cpu.gather(sigar, pId);

después de llamar a getProcCpu (pid), pero sigo obteniendo solo dos valores (0.0 y 9.08729312E-315) incluso si sigo aumentando y disminuyendo la carga en el servidor ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta