Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SUSE上的jvm堆限制_Java_Jvm_Heap_Limit_Suse - Fatal编程技术网

Java SUSE上的jvm堆限制

Java SUSE上的jvm堆限制,java,jvm,heap,limit,suse,Java,Jvm,Heap,Limit,Suse,我希望您能帮助我解决SUSE和JDK 1.4.x的问题: 我的suse使用15Gb RAM启用PAE。 不可能的是,jvm不能为堆大小分配超过1900Mb的内存。 所以java-Xmx2048m给了我一个错误。 看来你也有同样的问题,你解决了吗?我希望如此:) 谢谢 米开朗基罗在JDK1.4中,我认为你运气不好。这是一个32位JVM,句号。您需要更新到一个更新得多的Java版本。您应该能够使用-mx1960m,但实际上不能使用2GB。你可能想读书 运行多个JVM来解决这个“限制”(但是,为什么需

我希望您能帮助我解决SUSE和JDK 1.4.x的问题: 我的suse使用15Gb RAM启用PAE。 不可能的是,jvm不能为堆大小分配超过1900Mb的内存。 所以java-Xmx2048m给了我一个错误。 看来你也有同样的问题,你解决了吗?我希望如此:)

谢谢
米开朗基罗在JDK1.4中,我认为你运气不好。这是一个32位JVM,句号。您需要更新到一个更新得多的Java版本。

您应该能够使用-mx1960m,但实际上不能使用2GB。你可能想读书

运行多个JVM来解决这个“限制”(但是,为什么需要这么大的堆大小?)


或者更新到Java1.5,以达到32位JVM的理论4GB限制,在实践中可以低得多(请参阅)。但是,再说一次,为什么需要这么大的堆大小?

JVM仅限于一个连续的内存块,因此,尽管通过关闭不需要的进程,您可能可以从系统中多节省几MB的内存,但要看到大幅度增加的唯一方法是升级到一个带有64位JRE的64位操作系统

更新:有一个关于堆栈溢出的相关问题,有一些很好的答案:

只是几个更新: -在这台SUSE机器上(jvm堆的最大大小为1960m),我可以分配3.6Gb的堆,每个堆有几个10Mb的malloc(C编程)。所以我觉得很奇怪。 -在另一个具有相同jdk1.4.2的RH4上,我可以分配: /usr/local/jdks/j2sdk1.4.2_16/bin/java-Xmx2648m成功!! 你知道我在这辆RH4上的真正的公羊吗?只有1024Mb!!! -SUSE9和RH4都支持PAE(我很容易更改RAM设置,因为我使用VMWare)


因此,这似乎是一个与SUSE相关的问题。

Pascal,在许多情况下使用了大量堆。就我个人而言,我喜欢把它全部推回数据库,但在堆中保留大型i18n标签映射和缓存是很常见的。我有许多>4GiB的堆,它们只占用很少~0.4%的操作GC时间。@Xepoch有一些用于大型堆的用例,但这是不寻常的。大多数情况下,人们不需要这么大的堆,值得一问的是,他们为什么要这么做,而不是仅仅给出一个可能不是很好的建议的解决方案。