Oracle 的 JVM 是否有最低 -Xmx 设置?看起来 -Xmx2M 确实为应用程序提供了超过 2 MB 的堆大小,因为 Java Memory MX bean 告诉我它分配了大约 10 MB ......
JVM 是否有最低限度的静默忽略 Xmx 设置?
如果我跑
public static void main(String[] args) {
System.out.println("Heap size is " + Runtime.getRuntime().totalMemory() / 100000 / 10.0 + " MB");
}
在-mx8m
Java 7 更新 25 64 位上我得到
Heap size is 8.0 MB
但如果我和我一起跑步,-mx2m
我会得到
Heap size is 3.2 MB
所以看起来你得到的堆比你要求的非常小的尺寸略多。但是,即使对于小型移动设备,我也不必担心每一个最后的 MB,因为 JVM 本身要大得多(可能超过 100 MB 的共享内存、线程等)
即,如果您不能腾出几 MB,那么您将无法运行 JVM。
要让 jvm 启动,至少需要 2mb 的堆大小。您可以将堆大小设置为 0 字节,但 jvm 不会启动。建议的最大堆大小是总内存的 1/4。