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?
Sì. Entrambe le modalità restituiscono esattamente lo stesso valore per la memoria utilizzata. – huljas