11

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

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

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

4

1 回答 1

5

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

于 2012-05-09T08:00:17.890 回答