有没有办法从java获取操作系统上的总内存大小?使用
Runtime.getRuntime().maxMemory()
返回JVM的允许内存,而不是操作系统的内存。有没有人有办法获得这个(从java代码)?
答案 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"