其中是linux(SL4)上定义的默认JVM堆大小

其中是linux(SL4)上定义的默认JVM堆大小,jvm,sun,Jvm,Sun,我目前正在SL4集群上使用sun的Java1.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启动它,那么它工作正常。所以,我想知道默认堆大小设置在哪里,更重要的是如

我目前正在SL4集群上使用sun的Java1.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选项,但这感觉有点笨拙;我希望在某个地方有一个属性文件,但到目前为止我一直找不到它。

没有用于此的属性文件。根据:

初始堆大小:

较大者为机器的1/64 机器上的物理内存或某些 合理的最低限度。在J2SE5.0之前, 默认的初始堆大小为 合理的最小值,随时间变化 站台。你可以覆盖这个 默认使用-Xms命令行 选择权

最大堆大小:

物理量的1/4中的较小者 内存或1GB。在J2SE5.0之前 默认最大堆大小为64MB。 您可以使用 -Xmx命令行选项


注意:堆大小的边界和分数是正确的 对于J2SE5.0。他们很可能是 在后续版本中不同,如下所示 计算机变得越来越强大


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

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

OK,太好了。但事实似乎并非如此,我甚至无法找出默认值是什么,因为它不会从默认值开始。知道为什么它没有被设置为1GB吗?可以做些什么?公平地说,这是我们拥有的JVM中的一个bug吗?是32位还是64位VM?副总裁?64位操作系统,对吗?这有帮助吗?>uname-a Linux eddie004 2.6.18-128.7.1.el5#1 SMP Mon Aug 24 08:12:52美国东部夏令时2009 x86_64 x86_64 x86_64 GNU/Linux我在使用或不使用-d64(and-server)时都有相同的行为:>java-d64-虚拟机初始化期间发生版本错误无法为对象堆保留足够的空间无法创建java虚拟机。联系好,;我认为这一定是因为机器有8G物理内存,但每个用户只允许2G物理内存,这在某种程度上混淆了JVM,使其行为与规范不同。对不起,该注释格式不正确。这是一个64位操作系统,使用-d64没有任何区别,使用-server也没有任何区别。这可能与机器有8G有关,但将用户限制为2G Hi Brian:这是否意味着您只能在运行时更改堆大小?更准确地说,如果我更改默认值并重新启动JVM,堆大小会恢复为“硬编码的默认值”吗?