首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java webstart max-heap-size导致JVM无法启动

Java webstart max-heap-size导致JVM无法启动
EN

Stack Overflow用户
提问于 2010-07-20 07:28:43
回答 2查看 17.1K关注 0票数 4

我们在客户端使用java webstart来实现基于java swing的应用。最近,我们在点击jnlp链接时遇到了一个奇怪的“无法启动java虚拟机”的错误。

我们很快就发现了它,因为jnlp文件中的max-heap-size设置为1024m,而大多数客户端PC只有1 gb的物理内存。将max-heap-size重新设置为512m解决了问题。目前,jnlp文件中的相关行如下所示

代码语言:javascript
运行
复制
 <j2se version="1.5+" initial-heap-size="100m" max-heap-size="512m"/>

我查看了jnlp规范,但找不到任何与"Java虚拟机“问题相关的内容。理论上,最大堆大小不应该和初始堆大小一样重要。但我们的经验却恰恰相反。

客户端环境:

Windows XP SP2 (32位),Internet Explorer8.06,内存1G注意:将最大堆大小设置为1024m可能会在具有2G内存的计算机上导致相同的问题。

基本上,我在这里寻找的是关于为什么会发生这种情况的一些参考/规范/经验,以及除了增加物理内存大小之外,是否有任何解决这个问题的方法。

另一件事是,如果我们没有指定max-heap- size,实际的物理内存大小是用作max-heap-size,还是使用系统默认的内存大小?

谢谢,JasonW

EN

回答 2

Stack Overflow用户

发布于 2010-08-22 17:54:14

这个问题很可能是由于无法为您的JVM分配足够大的内存区域而导致的。出于实现原因,Java对象堆必须分配在连续的虚拟地址中。

我注意到在有2 Gb内存的Win XP机器上,这个问题在1.5 GB左右就会崩溃(这取决于每台PC上运行的进程,所以YMMV)。

请查看以下帖子以获取一些解释:

Java maximum memory on Windows XP

Why is the maximum size of the Java heap fixed?

票数 3
EN

Stack Overflow用户

发布于 2011-05-03 00:08:21

我发现在Mac版本的javaws中,初始堆大小和最大堆大小都没有得到很好的考虑。我最终用下面这样的代码替换了它们:

代码语言:javascript
运行
复制
      <j2se version="1.6+" java-vm-args="-Xmx1024m -Xms256m -Xss8m" />

最后让它在堆大小更大的Mac上工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3285915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档