SUSE上的jvm堆限制

时间:2009-11-23 19:48:29

标签: java jvm heap limit suse

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

感谢 米开朗基罗

4 个答案:

答案 0 :(得分:2)

JVM仅限于一个连续的内存块,所以尽管您可以通过关闭不需要的进程来调整系统中的更多MB,但这是查看大型内存的唯一方法。增加是使用64位JRE升级到64位操作系统。

更新: Stack Overflow上有一个相关的问题,有一些不错的答案:What is the Maximum Java Heap Space for SuSE Linux

答案 1 :(得分:1)

在JDK 1.4中,我认为你运气不好。这是一个32位的JVM周期。您需要更新到更新版本的Java。

答案 2 :(得分:1)

你应该可以使用-mx1960m,但确实不能使用2GB。您可能需要阅读http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4435069

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

或者更新到Java 1.5以达到32位JVM的理论4GB限制,这在实践中要低得多(参见http://forums.sun.com/thread.jspa?threadID=5207549&start=15)。但是,再次,为什么你需要那么多的堆大小?

答案 3 :(得分:0)

只是几个更新: - 在这个SUSE机器上(其中jvm堆最大大小是1960m)我可以分配3.6Gb的堆,每个10Mb的几个malloc(C编程)。所以这听起来很奇怪。 - 在另一台RH4上使用相同的jdk1.4.2我可以分配: /usr/local/jdks/j2sdk1.4.2_16/bin/java -Xmx2648m成功!! 你知道RH4这个真正的内存吗?只需1024Mb! - SUSE9和RH4都启用了PAE(我使用VMWare轻松更改了RAM设置)。

所以这似乎与SUSE有关。