从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"
获取信息