如何使用 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
我正在尝试获取虚拟机上使用的内存百分比。
在我的本地计算机上,我通过使用实现它:
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