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

java runtime.freememory()与jconsole输出不匹配,java,jvm,jconsole,Java,Jvm,Jconsole,我遇到了一个奇怪的问题。我有多个JVM正在运行,我需要获取它们的内存使用详细信息。当我通过Runtime.getFreeMemory()获取详细信息并将其与jconsole输出进行比较时,会发现有很大的不同。有什么问题吗??使用Runtime.getFreeMemory()或 ManagementFactory.getMemoryXbean().getHeapMemoryUsage().getMax()-ManagementFactory.getMemoryXbean().getHeapMemo

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

ManagementFactory.getMemoryXbean().getHeapMemoryUsage().getMax()-ManagementFactory.getMemoryXbean().getHeapMemoryUsage().getUsed();
有什么问题吗??非常感谢您的任何建议/意见


感谢运行时。getFreeMemory()告诉您分配的内存中剩余的内存量。它是
Runtime.totalMemory()
——当前使用的内存
Runtime.maxMemory()
是您指示JVM可以分配的总内存(
-Xmx
)。它可以超过运行时.totalMemory()。您可能看到了最大内存和jconsole中使用的内存之间的差异。要测试这一点,请尝试将(
-Xms
)设置为与(
-Xmx
)相同,这将导致JVM在开始时分配最大内存。

您看到了什么差异?顺便说一句,你试过VisualVM吗?对不起,ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax()-ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();使用jconsole反映,其中as Runtime.getFreeMemory()不是
free=total-当然是已使用的。你能给我们一些数字吗?