1

我目前在 SL4 集群上使用 sun 的 java 1.6。

出于某种原因,1.6 版 JVM 启动时堆很大,无法启动:

java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

如果我用例如-Xmx1800M 启动它,那么它工作正常。所以,我想知道默认堆大小设置在哪里,更重要的是如何更改它?

这台机器有 8GB 的​​物理内存,我相信 sun 的服务器 JVM 应该以默认的一半内存最多 512M 启动,但显然不是这样,因为它试图分配超过 1800M。

编辑:我意识到可以使用_JAVA_OPTIONS,但这感觉有点笨拙;我期待某个地方有一个属性文件,但到目前为止我一直找不到它。

4

2 回答 2

1

没有用于此的属性文件。根据垃圾收集器人体工程学

初始堆大小:

机器上机器物理内存的 1/64 或某个合理最小值中的较大者。在 J2SE 5.0 之前,默认的初始堆大小是合理的最小值,这因平台而异。您可以使用 -Xms 命令行选项覆盖此默认值。

最大堆大小:

物理内存的 1/4 或 1GB 中的较小者。在 J2SE 5.0 之前,默认的最大堆大小为 64MB。您可以使用 -Xmx 命令行选项覆盖此默认值。


注意:为堆大小指定的边界和分数对于 J2SE 5.0 是正确的。随着计算机变得更强大,它们在后续版本中可能会有所不同。

假设你有 8GB 的​​ RAM,默认的最大堆大小应该是 1GB,假设你使用的是 Java 6。

于 2009-10-30T11:32:55.127 回答
1

没有标准的属性文件。(Sun) JVM 中有硬编码的默认值。

于 2009-10-30T11:33:30.927 回答