我试图获取虚拟机上使用的百分比ram。
在我的计算机本地,我通过使用:
来实现它 Double FreeRamSize = (double) mxBean.getFreePhysicalMemorySize()
Double TotalRamSize = (double) mxBean.getTotalPhysicalMemorySize()
它完美无缺。 但是,如果我在虚拟机上部署我的应用程序,我将只有总物理内存大小,而我的FreeRamSize将始终返回0.我没有在互联网上找到任何提示。
提前感谢您的帮助。
答案 0 :(得分: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