SUSE 上的 jvm 堆限制
我希望您能帮助我解决 SUSE 和 JDK 1.4.x 遇到的问题: 我的 suse 启用了 PAE,具有 15Gb RAM。 不幸的是,jvm 无法分配超过 1900Mb 的堆大小。 所以 java -Xmx2048m 给了我一个错误。 看来你也遇到了同样的问题,你解决了吗?我希望如此:)
谢谢 米开朗基罗
I hope you can help me on the problem we have with SUSE and JDK 1.4.x:
my suse is PAE enabled with 15Gb RAM.
unfotunately jvm cannot allocate more than 1900Mb for heap size.
So java -Xmx2048m gives me an error.
it seems you had the same problem, did you solve it? I hope so :)
thanks
Michelangelo
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
JVM 仅限于单个连续的内存块,因此尽管您可以通过关闭不需要的进程来从系统中多调整几 MB,但看到大幅增加的唯一方法是使用 64 位 JRE 升级到 64 位操作系统。
更新: Stack Overflow 上有一个相关问题,其中有一些不错的答案:SuSE Linux 的最大 Java 堆空间是多少
The JVM is limited to a single contiguous block of memory, so although you might be able to tweak a few more MB out of your system by shutting down processes that you don't really need, the only way to see a big increase is to upgrade to a 64 bit Operating System with a 64 bit JRE.
Update: There's a related question on Stack Overflow with some nice answers: What is the Maximum Java Heap Space for SuSE Linux
在 JDK 1.4 中我认为你运气不好。它是一个 32 位 JVM,就这样。您将需要更新到更新版本的 Java。
In JDK 1.4 I think you are out of luck. It's a 32-bit JVM, period. You will need to update to a much newer version of Java.
您应该能够使用 -mx1960m,但确实不能使用 2GB。您可能想阅读 https://bugs.java.com/bugdatabase/view_bug?bug_id =4435069。
运行多个 JVM 来解决这个“限制”(但是,为什么需要那么大的堆大小?)。
或者更新到 Java 1.5 以达到 32 位 JVM 理论上的 4GB 限制,实际上该限制可以低得多(请参阅 http://forums.sun.com/thread.jspa?threadID=5207549&start=15)。但是,为什么需要那么大的堆大小呢?
You should be able to use -mx1960m, but not 2GB indeed. You might want to read https://bugs.java.com/bugdatabase/view_bug?bug_id=4435069.
Run multiples JVMs to workaround this "limitation" (but, why do you need that much a heap size for?).
Or update to Java 1.5 to reach the theoretical 4GB limit of a 32-bit JVM which can be much lower in practice (see http://forums.sun.com/thread.jspa?threadID=5207549&start=15). But, again, why do you need that much a heap size for?
只是一些更新:
- 在这台 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有关的问题。
just a couple of updates:
- on this SUSE machine (where jvm heap max size is 1960m) I can allocate 3.6Gb of heap with several malloc of 10Mb each (C programming). So it sounds quite strange to me.
- on another RH4 with same jdk1.4.2 I can allocate:
/usr/local/jdks/j2sdk1.4.2_16/bin/java -Xmx2648m with success!!
do you know my real RAM on this RH4? just 1024Mb!!!
- both SUSE9 and RH4 are PAE enabled (i changed RAM settings easly cause I use VMWare).
So it seems a problem related to SUSE.