3

我遇到了一个奇怪的问题。我有多个 JVM 正在运行,我需要获取它们的内存使用详细信息。当我获取详细信息Runtime.getFreeMemory()并将其与 jconsole 输出进行比较时,会有很大的不同。可能是什么问题?当我使用Runtime.getFreeMemory()

ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax() - ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();

可能是什么问题?非常感谢任何建议/意见。

谢谢

4

1 回答 1

0

Runtime.getFreeMemory()告诉您已分配的内存量。它是Runtime.totalMemory()- 当前使用的内存。 Runtime.maxMemory()是您指出的 JVM 可以分配的总内存 ( -Xmx)。它可以超过Runtime.totalMemory(). 您可能正在查看 max memory 和 used in jconsole 之间的区别。要对此进行测试,请尝试将 ( ) 设置-Xms为与 ( ) 相同,-Xmx这将导致 JVM 在开始时分配最大内存。

于 2012-10-01T18:30:03.310 回答