2015-08-21 62 views
0

我有一個Java Webstart應用程序,它以-Xmx1G成功啓動,但未能以-Xmx2G開頭。我的一些用戶確實需要2G的堆。Webstart應用程序無法以Java 8u60上的-Xmx2G開頭

這似乎只是Java 8u60的問題,因爲我有一個成功啓動Java 8u51的人的報告。

失敗看起來像這樣:我看到藍色的'Java ...'啓動畫面,然後在幾秒鐘後,它不再顯示Java控制檯,也沒有產生任何預期的跟蹤信息地點。

僅在內存少於2G的客戶端上發生故障。但是,對於請求「最大」堆大小可能會導致應用程序很早失敗並且沒有任何診斷信息,我有點驚訝。畢竟,我們正在處理「最大」價值,而不是「初始」價值。我在多處閱讀JVM不應該這樣做。

但我還記得讀到'初始',如果未指定,是基於最大值。所以,隨着通過-Xmx2G,我嘗試通過-Xms512M,-Xms256M-Xms128M。但是,這種縮小初始堆大小的嘗試無濟於事。我無法從-Xmx2G開始獲得這個東西!

有沒有人有任何光在這種情況下襬脫?一個辦法?解決方法?在短期內,我將更改爲-Xmx1G,但正如我剛開始所說的,我有一些真正需要-Xmx2G的用戶。我想避免有兩個單獨的*.jnlp文件,這也需要有兩個單獨的*.jar文件!

回答

0

原來,這正是Java8u60上的Webstart所做的,如果客戶機沒有足夠的內存來滿足-Xmx。它試圖開始,然後它會消失,但沒有任何跡象表明哪裏出了問題。因此,如果我想讓具有更多內存的用戶將該內存分配給我的應用程序,那麼最終我將不得不以不同配置構建我的應用程序。這是因爲簽名需要將* .jnlp文件放入* .jar文件本身,並且此* .jnlp文件必須與用於啓動應用程序的* .jnlp文件完全匹配。

+0

如果JNLP無法啓動,它不太可能正常啓動效果更好。 順便說一句:你檢查是否使用64位jvm? – eckes

+0

有趣的是,你應該說---我似乎每2-3個月都會遇到一個新的webstart問題,即使我的應用總是從本地啓動。不,我沒有檢查客戶機/ JRE是32位還是64位。但是,我可以通過修改「-Xmx」的參數來啓動或不啓動應用程序,並且故障點與可用內存相對應,所以我相當確信這是原因。 –

相關問題