Getting Memory Statistics in Java: Runtime vs. MemoryMXBean
Asked Answered
M

1

14

I am creating a scheduled executor to read the memory usage of the JVM. I have come across two ways to get memory statistics in a running JVM - Runtime & MemoryMXBean, with the following correspondence between their methods:

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

With the exception of the additional non-heap memory usage information provided by MemoryMXBean, are there any reasons why I should prefer it over Runtime, or vice-versa?

Mordant answered 9/5, 2012 at 4:41 Comment(0)
V
7

There are none. JMX bean can be accessed externally and is meant for management tools like hyperic ( or even nagios ) - It would delegate to Runtime anyway.

Viviparous answered 9/5, 2012 at 8:0 Comment(1)
Yes. Both ways return exactly the same value for the used memory.Manager

© 2022 - 2024 — McMap. All rights reserved.