我有一个使用-Xmx1G
成功启动的Java Webstart应用程序,但无法以-Xmx2G
开头。我的一些用户确实需要2G的堆。
这似乎只是Java 8u60的一个问题,因为我有一个人用Java 8u51成功启动的报告。
失败看起来像这样:我看到蓝色的“Java ...”启动画面,然后几秒后, poof 它就消失了,然后显示Java控制台并且没有产生任何跟踪信息在预期的地方。
仅在可用内存小于2G的客户端上发生故障。但是,我有点惊讶的是,请求“最大”堆大小可能会导致应用程序如此早地失败并且没有任何诊断信息。毕竟,我们处理的是“最大”值,而不是“初始”值。我在多个地方读到JVM不应该这样做。
但我还记得读过“初始”,如果没有说明的话,是基于最大值。因此,在传递-Xmx2G
的同时,我尝试传递-Xms512M
,-Xms256M
和-Xms128M
。但是,这种缩小初始堆大小的尝试并没有帮助。我不能从-Xmx2G
开始这个事情!
有没有人对这种情况有所了解?一个办法?解决方法?在短期内,我将更改为-Xmx1G
,但正如我在开头所说,我有一些用户确实需要-Xmx2G
。我想避免使用两个单独的*.jnlp
文件,这也需要两个单独的*.jar
个文件!
答案 0 :(得分:0)
事实证明,如果客户端机器没有足够的内存来满足-Xmx
,那正是Java8u60上的Webstart所做的。它试图启动,然后 poof ,它消失了,没有任何迹象表明出了什么问题。
因此,如果我想让具有更多内存的用户将该内存分配给我的应用程序,我将最终必须在不同的配置中构建我的应用程序。这是因为签名需要* .jnlp文件进入* .jar文件本身,并且此* .jnlp文件必须与用于启动应用程序的* .jnlp文件完全匹配。