java 获取内存信息(include direct buffer)

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?

解决方案

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.

posted on 2023-03-15 18:07  silyvin  阅读(191)  评论(0编辑  收藏  举报