使用Java获取内存统计信息:Runtime vs. MemoryMXBean

时间:2012-05-09 04:41:06

标签: java memory-profiling

我正在创建一个计划执行程序来读取JVM的内存使用情况。我有两种方法可以在正在运行的JVM中获取内存统计信息 - Runtime& MemoryMXBean,它们的方法之间有以下对应关系:

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

除了MemoryMXBean提供的额外非堆内存使用情况信息之外,还有什么理由可以让我更喜欢它而不是运行时,反之亦然?

1 个答案:

答案 0 :(得分:2)

没有。 JMX bean可以在外部访问,适用于管理工具 hyperic(甚至是nagios) - 无论如何都会委托给Runtime。