我运行一个java程序使用
java -Xms32m -Xmx64m xxxclassname
但是从 top 命令,我知道有一个近 200MB 的内存。为什么它不小于 Xmx 选项中指定的 64MB?
我运行一个java程序使用
java -Xms32m -Xmx64m xxxclassname
但是从 top 命令,我知道有一个近 200MB 的内存。为什么它不小于 Xmx 选项中指定的 64MB?
这
-Xmx64m
flag 只控制堆大小。Java 需要比这更多的内存才能正常运行。
您正在指定垃圾收集堆的最大大小。Java 内存消耗还有其他方面,包括本机代码(不仅是 JVM,还包括任何加载了 JNI 的本机库)和PermGen空间。(PermGen 空间可以稍微调整一下,但你真的不想把它限制太多,否则你的程序会崩溃。)