2012-05-09 10 views
8

Estoy creando un ejecutor programado para leer el uso de memoria de la JVM. Me he encontrado dos formas de obtener estadísticas de memoria en una JVM corriendo - Tiempo de ejecución & MemoryMXBean, con la siguiente correspondencia entre sus métodos:Obtener estadísticas de memoria en Java: Runtime vs. MemoryMXBean

memoryMxBean.getHeapMemoryUsage().getUsed()  <=> runtime.totalMemory() - runtime.freeMemory() 
memoryMxBean.getHeapMemoryUsage().getCommitted() <=> runtime.totalMemory() 
memoryMxBean.getHeapMemoryUsage().getMax()  <=> runtime.maxMemory() 

Con la excepción de la información de uso de memoria no montón adicional proporcionada por MemoryMXBean, ¿Hay alguna razón por la que debería preferirla a Runtime, o viceversa?

Respuesta

2

No hay ninguno. Se puede acceder a JMX Bean externamente y está destinado a herramientas de administración como hyperic (o incluso nagios). De todos modos, se delegaría en Runtime.

+0

Sí. Ambas formas devuelven exactamente el mismo valor para la memoria utilizada. – huljas

Cuestiones relacionadas