我们在客户端使用 java webstart 来实现基于 java swing 的应用程序。最近我们在点击 jnlp 链接时遇到了一个奇怪的“无法启动 java 虚拟机”错误。
我们很快就发现它是因为 jnlp 文件中的 max-heap-size 设置设置为 1024m,而大多数客户端 PC 只有 1 gb 物理内存。将 max-heap-size 设置回 512m 解决了这个问题。目前,jnlp 文件中的相关行看起来像
<j2se version="1.5+" initial-heap-size="100m" max-heap-size="512m"/>
我查看了 jnlp 规范,但找不到与“Java 虚拟机”问题相关的任何内容。理论上,最大堆大小不应该像初始堆大小那么重要。但我们的经验却恰恰相反。
客户端环境:
Windows XP SP2 ( 32bit ), Internet Explorer 8.06, Memory 1G 注意 max-heap-size 设置为 1024m 会在 2G ram 的机器上引起同样的问题。
基本上,我在这里寻找的是一些关于为什么会发生这种情况的参考/规范/经验,以及除了增加物理内存大小之外是否有任何解决这个问题的方法。
另一件事是,如果我们不指定 max-heap-size,是使用实际物理内存大小作为 max-heap-size,还是使用系统默认大小?
谢谢,杰森W