如果我没有指定-Xms,Java会在什么时候启动堆?

时间:2012-08-15 15:01:16

标签: java memory jvm jvm-arguments

  

可能重复:
  How is the default java heap size determined?

我很好奇如果我没有使用Java为初始JVM堆大小指定-Xms会发生什么?

目前我有-Xms256m and -Xmx512m,但这会在我的服务器上出错:

Failed to create JVM, return code is:-1

我相信JVM在256m起点上获得256MB的连续内存时遇到了麻烦。在今天之前,我们只有-Xmx256m设置,但有一些内存不足的进程。

如果我删除-Xms设置并且只保留-Xmx512m',JVM是否可以正常运行?堆开始是什么?

如果没有声明起始堆,它如何获取连续内存?

3 个答案:

答案 0 :(得分:2)

默认初始尺寸:

Larger of 1/64th of the System's physical memory on the machine or some reasonable minimum. Before J2SE 5.0, the default initial heap size was a reasonable minimum, which varies by platform.

答案 1 :(得分:2)

回答你的第一个问题。请看Ted Hopp的评论。的 How is the default java heap size determined?

其次,您不需要指定最小堆大小和最小堆大小。您也输入错误。

应为-Xms256m -Xmx512m

在客户端类计算机上,初始堆大小为4Mbyte,其中最大堆为64Mbyte

答案 2 :(得分:0)

不要放=

-Xms256m -Xmx512m

我认为默认值默认为2 MB,但这取决于您的Java版本和您的平台。我会尝试挖掘文档。