从java获取OS内存大小

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

Runtime.getRuntime().maxMemory() 

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

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

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

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

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

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