在Java中获取内存统计信息:Runtime vs. MemoryMXBean

12

我正在创建一个定时执行器来读取JVM的内存使用情况。我发现在运行的JVM中获取内存统计信息有两种方式- Runtime和MemoryMXBean,并且它们的方法之间具有以下对应关系:

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

除了MemoryMXBean提供的额外的非堆内存使用信息之外,是否有任何理由让我更喜欢它而不是Runtime,或者反之亦然?

1个回答

7

没有特别的限制。JMX Bean 可以被外部访问,它是为管理工具如 hyperic (或者 nagios)而设计的,不论如何都会委托给运行时。


是的。无论使用哪种方式,返回的内存值都完全相同。 - huljas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接