2012-05-09 17 views
8

Sto creando un esecutore pianificato per leggere l'utilizzo della memoria della JVM. Mi sono imbattuto in due modi per ottenere le statistiche di memoria in una JVM in esecuzione - Runtime & MemoryMXBean, con la seguente corrispondenza tra i loro metodi:Ottenere statistiche della memoria in Java: Runtime vs. MemoryMXBean

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

Ad eccezione delle informazioni utilizzo della memoria non-heap aggiuntiva fornita dalla MemoryMXBean, ci sono dei motivi per cui dovrei preferirlo a Runtime, o viceversa?

risposta

2

Non ce ne sono. È possibile accedere esternamente al bean JMX ed è pensato per strumenti di gestione come hyperic (o anche nagios). In ogni caso, delegherà a Runtime.

+0

Sì. Entrambe le modalità restituiscono esattamente lo stesso valore per la memoria utilizzata. – huljas