当我使用java命令调用程序时,为什么不使用java Xmx选项?

时间:2012-09-19 06:21:44

标签: java performance jvm

  

可能重复:
  Why there is memory usage difference between xmx and top?

我使用

运行java程序
java    -Xms32m -Xmx64m  xxxclassname

但是从top命令,我知道有一个近200MB的内存。为什么它不小于Xmx选项中指定的64MB?

2 个答案:

答案 0 :(得分:4)

-Xmx64m  

标志仅控制堆大小。 Java需要更多的内存才能正常运行。

答案 1 :(得分:4)

您正在指定垃圾回收堆的最大大小。 Java内存消耗还有其他方面,包括本机代码(不仅是JVM,还包括加载了JNI的任何本机库)和PermGen空间。 (PermGen的空间可以稍微调整一下,但你真的不想限制它太多,否则你的程序会崩溃。)