如何使用 JAVA 获取虚拟机的可用内存大小 (ram)

How to get the free memory size (ram) of a virtual machine using JAVA

我正在尝试获取虚拟机上使用的内存百分比。

在我的本地计算机上,我通过使用实现它:

Double FreeRamSize = (double) mxBean.getFreePhysicalMemorySize() Double TotalRamSize = (double) mxBean.getTotalPhysicalMemorySize()

而且效果非常好。 但是如果我在虚拟机上部署我的应用程序,我将只有总物理内存大小,而我的 FreeRamSize 将始终 return 0。我在互联网上没有找到任何提示。

在此先感谢您的帮助。

您不需要将内存信息代码修改为 运行 虚拟机,因为虚拟机和物理机 RAM 之间的根本差异应该与 Java 进程完全无关。

只是为了好玩,我 运行 这在我自己的虚拟机上没有问题。

double GiB = Math.pow(2, 30);
OperatingSystemMXBean osBean = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class);

Double freeRamSize = (double) osBean.getFreePhysicalMemorySize();
Double totalRamSize = (double) osBean.getTotalPhysicalMemorySize();

System.out.println(freeRamSize / GiB + " / " + totalRamSize / GiB);

1.8224868774414062 / 3.9995040893554688