2016-05-16 90 views
0

我正在尝试使用虚拟机上使用的百分比ram。如何使用JAVA获得虚拟机的可用内存大小(内存)

在本地我的电脑我实现它通过使用:

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

而且这工作完全正常。 但是,如果我在虚拟机上部署我的应用程序,则只有总物理内存大小,并且我的FreeRamSize将始终返回0.我没有在Internet上找到任何提示。

提前感谢您的帮助。

+2

我不知道如果我得到彻底的问题,但通过编程的角度看物理和虚拟机之间没有区别 –

+0

是什么让你觉得你需要改变你如何访问虚拟机的内存信息?你有没有尝试过? –

+0

@FelicePollano也许我没有正确解释我的问题。我无法在虚拟机上获得可用的物理内存大小。它总是会回到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

+0

的确,我只是在个人电脑上尝试了一个虚拟机,它可以工作(包括你的和我的代码)。 我仍然不知道为什么我无法在工作中检索虚拟机上的freeMemory,但它似乎不是代码错误。感谢您的帮助! –