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