可能重复:
Why there is memory usage difference between xmx and top?
我使用
运行java程序java -Xms32m -Xmx64m xxxclassname
但是从top命令,我知道有一个近200MB的内存。为什么它不小于Xmx选项中指定的64MB?
答案 0 :(得分:4)
-Xmx64m
标志仅控制堆大小。 Java需要更多的内存才能正常运行。
答案 1 :(得分:4)
您正在指定垃圾回收堆的最大大小。 Java内存消耗还有其他方面,包括本机代码(不仅是JVM,还包括加载了JNI的任何本机库)和PermGen空间。 (PermGen的空间可以稍微调整一下,但你真的不想限制它太多,否则你的程序会崩溃。)