众所周知,java -Xmx
选项用于设置Java程序可用的最大堆空间。但是,Java程序是否可以读取已设置的值?类似于System.getMaximumHeapSpace()
(不存在)。
最佳答案
有一个 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字节),但事实并非如此。
关于java - 在运行时读取最大堆空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/992991/