我希望你能帮助我解决我们在 SUSE 和 JDK 1.4.x 上遇到的问题:我的 suse 启用了 15Gb RAM 的 PAE。不幸的是,jvm 不能为堆大小分配超过 1900Mb 的空间。所以 java -Xmx2048m 给了我一个错误。看来你也遇到了同样的问题,你解决了吗?但愿如此 :)
感谢米开朗基罗
我希望你能帮助我解决我们在 SUSE 和 JDK 1.4.x 上遇到的问题:我的 suse 启用了 15Gb RAM 的 PAE。不幸的是,jvm 不能为堆大小分配超过 1900Mb 的空间。所以 java -Xmx2048m 给了我一个错误。看来你也遇到了同样的问题,你解决了吗?但愿如此 :)
感谢米开朗基罗
JVM 仅限于单个连续的内存块,因此尽管您可以通过关闭您并不真正需要的进程来调整系统中的更多 MB,但看到大幅增加的唯一方法是升级到带有 64 位 JRE 的 64 位操作系统。
更新: Stack Overflow 上有一个相关的问题,有一些很好的答案:SuSE Linux 的最大 Java 堆空间是多少
在 JDK 1.4 中,我认为您不走运。这是一个 32 位的 JVM,期间。您将需要更新到更新的 Java 版本。
您应该可以使用 -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)。但是,再一次,为什么你需要这么大的堆大小呢?
只是几个更新: - 在这台 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 相关的问题。