众所周知,java -Xmx
选项用于设置Java程序可用的最大堆空间。但有没有办法让Java程序读取已设置的值?像System.getMaximumHeapSpace()
这样的东西(不存在)。
答案 0 :(得分:22)
有一个Runtime.maxMemory
,文档中说这将返回Java虚拟机将尝试使用的最大内存量,但是它是否是启动JVM时设置的最大堆内存量并不具体。
作为测试,我编写了以下程序:
class MaxMemory {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().maxMemory());
}
}
执行结果如下:
C:\coobird\>java -Xmx64m MaxMemory
66650112
C:\coobird\>java -Xmx128m MaxMemory
133234688
这是在Windows上使用Java SE 6版本1.6.0_12。
虽然这些值接近64 MB(67,108,864字节)和128 MB(134,217,728字节),但它们并非如此。