java runtime.freememory()与jconsole输出不匹配

时间:2012-10-01 18:08:17

标签: java jvm jconsole

我遇到了一个奇怪的问题。我有多个JVM在运行,我需要获取它们的内存使用细节。当我通过Runtime.getFreeMemory()获取细节并将其与jconsole输出进行比较时,存在巨大差异。可能是什么问题?当我使用Runtime.getFreeMemory()或ManagementFactory.getMemoryMXBean()时,我得到的信息不正确.getHeapMemoryUsage()。getMax() -               。ManagementFactory.getMemoryMXBean()getHeapMemoryUsage()getUsed();

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

由于

1 个答案:

答案 0 :(得分:0)

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