我正在创建一个预定的执行程序来读取 JVM 的内存使用情况。我遇到了两种在正在运行的 JVM 中获取内存统计信息的方法 - Runtime 和 MemoryMXBean,它们的方法之间具有以下对应关系:
memoryMxBean.getHeapMemoryUsage().getUsed() <=> runtime.totalMemory() - runtime.freeMemory()
memoryMxBean.getHeapMemoryUsage().getCommitted() <=> runtime.totalMemory()
memoryMxBean.getHeapMemoryUsage().getMax() <=> runtime.maxMemory()
除了 MemoryMXBean 提供的额外的非堆内存使用信息之外,还有什么理由让我更喜欢它而不是运行时,反之亦然?