sistema obtener memoria informacion con java jmx

memoria - Cómo obtener el porcentaje de uso de la CPU del sistema operativo de Java



obtener informacion del sistema con java (2)

Quiero calcular el porcentaje de uso de la CPU del sistema operativo desde el código Java.

  1. Hay varias formas de encontrarlo mediante el comando de unix [por ejemplo, utilizando mpstat , /proc/stat etc.] y usarlo desde Runtime.getRuntime().exec

Pero no quiero usar las llamadas del sistema.

Probé ManagementFactory.getOperatingSystemMXBean()

OperatingSystemMXBean osBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); System.out.println(osBean.getSystemLoadAverage());

Pero da la carga de la CPU, pero no el uso de la CPU. ¿Hay alguna forma de encontrar el porcentaje de uso?


En Java 7 puedes conseguirlo así:

public static double getProcessCpuLoad() throws Exception { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); ObjectName name = ObjectName.getInstance("java.lang:type=OperatingSystem"); AttributeList list = mbs.getAttributes(name, new String[]{ "ProcessCpuLoad" }); if (list.isEmpty()) return Double.NaN; Attribute att = (Attribute)list.get(0); Double value = (Double)att.getValue(); // usually takes a couple of seconds before we get real values if (value == -1.0) return Double.NaN; // returns a percentage value with 1 decimal point precision return ((int)(value * 1000) / 10.0); }


Puede utilizar la API SIGAR . Es multiplataforma (pero solo lo uso en Windows).

El Javadoc está disponible here y los binarios están here

Está licenciado bajo los términos de la licencia Apache 2.0.