【问题标题】:How to get the free memory size (ram) of a virtual machine using JAVA如何使用 JAVA 获取虚拟机的可用内存大小(ram)
【发布时间】:2016-09-12 10:03:13
【问题描述】:

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

在我的计算机上,我通过以下方式实现它:

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

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

提前感谢您的帮助。

【问题讨论】:

  • 我不知道我是否完全理解了这个问题,但是从编程的角度来看,物理机和虚拟机之间没有区别
  • 是什么让您认为您需要更改访问虚拟机内存信息的方式?你试过了吗?
  • @FelicePollano 也许我没有正确解释我的问题。我无法获得虚拟机上的可用物理内存大小。它总是会返回 0。但我会得到总的物理内存大小。 (在我的计算机上,我将同时拥有这两个值)。
  • @BooRadley 我的一位上司告诉我,我在网上搜索时没有找到其他方法

标签: java virtual-machine ram


【解决方案1】:

您应该不需要修改内存信息代码来运行虚拟机,因为虚拟机和物理机 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

【讨论】:

  • 确实,我刚刚在我的个人计算机上尝试了一个虚拟机,它可以工作(你和我的代码)。我仍然不知道为什么我在工作时无法检索 vm 上的 freeMemory,但似乎不是代码错误。感谢您的帮助!
猜你喜欢
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 2011-03-25
  • 2013-01-13
  • 1970-01-01
  • 2011-04-13
相关资源
最近更新 更多