从java获取操作系统内存大小

时间:2010-12-02 13:11:55

标签: java memory operating-system

有没有办法从java获取操作系统上的总内存大小?使用

Runtime.getRuntime().maxMemory()

返回JVM的允许内存,而不是操作系统的内存。有没有人有办法获得这个(从java代码)?

3 个答案:

答案 0 :(得分:14)

com.sun.management.OperatingSystemMXBean bean =
  (com.sun.management.OperatingSystemMXBean)
    java.lang.management.ManagementFactory.getOperatingSystemMXBean();
long max = bean.getTotalPhysicalMemorySize();

返回JVM的可用RAM大小(受32位限制),而不是堆大小。

答案 1 :(得分:3)

没有Java方法来获取该信息。您可以使用Runtime.exec()启动特定于操作系统的命令,例如Linux上的/usr/bin/free。仍然在Linux系统上,您可以使用Java文件访问类(FileInputStream)来解析/proc/meminfo

答案 2 :(得分:3)

纯Java无法实现,您的程序在java虚拟机上运行,​​因此它与操作系统隔离。我建议2个解决方案:

1)您可以使用JNI并调用C ++函数来执行此操作 2)另一种选择是使用Runtime.exec()。然后你必须从"cat /proc/meminfo"

获取信息