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.
- Hay varias formas de encontrarlo mediante el comando de
unix
[por ejemplo, utilizandompstat
,/proc/stat
etc.] y usarlo desdeRuntime.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);
}