众所周知,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/

10-12 00:29
查看更多