2011-11-18 18 views
1

所以 - JNLP文件可正是如此要求的堆內存大小:Java Web Start:如何根據客戶端可以管理的內容來改變jnlp中的堆內存請求?

<j2se version="1.6+" href="blah" max-heap-size="1g"/> 

1千兆字節是大量的內存爲基於Web的應用程序,要求是不是,但可惜的任務的一些(不是全部)用戶可能想要使用我的應用程序需要那麼多的內存。

問題是,如果您請求比jvm想要允許的更大的最大堆大小,它只會失敗,默默地。哎呀。

我不知道的第一件事是jvm如何決定最大允許的最大堆大小。據推測這取決於可用內存?

假設是這樣的話,有沒有一種方法可以測試客戶端上有多少內存可用,並且只有在可以處理時才請求一個大的最大堆大小?性能較差的客戶端只能運行一個較小的堆並丟失一些功能。

回答

3

......有沒有一種方法可以測試客戶端有多少內存可用,並且只有在可以處理時才請求一個大的最大堆大小?

我不這麼認爲。 (讓你的服務器查詢用戶PC有多少內存會是一個潛在的安全問題......)

我認爲你可以做的最好的辦法是爲用戶提供多種不同堆大小的JNLP鏈接,並允許他們在他們之間選擇。

+0

謝謝,這正是我想要做的。可惜jvm不能只設置一個較小的堆大小......即將我的請求視爲一個請求,而不是「死或死」。或者,允許在運行時從java代碼改變max-heap-size。 –

+0

@SideshowBob - 不幸的是,HotSpot JRE不支持這兩種功能。 –