2011-09-11 159 views
2

BEA建議保持最小和最大堆大小相同。他們沒有詳細說明建議的理由。有人可以提供細節嗎?JVM最小堆大小推薦原因?

我也從建築師的另一項建議,不設置任何最小值,只是設置最大值。對此有何評論?如果我不使用它,默認值是什麼?

什麼是監視和調整JVM設置的最佳工具。我在BEA weblogic 10g上使用JDK1.6。它在Linux 32位JVM上。

是否將最大堆大小設置爲2GB有什麼好處?服務器有很多RAM。目前它設置爲1.5GB,當有40個併發用戶時,它的使用率爲80%。 謝謝,

回答

1

當JVM需要增加堆的大小時,它會調用一個完整的垃圾回收,這可能會降低吞吐量或導致暫停,所以我認爲這是他們推薦的性能原因。

默認值爲documented爲2MB,所以如果您不覆蓋它,您可能會在啓動後獲得很多(可能非常快)的完整集合,因爲堆經常會調整大小。

除非您試圖保持內存佔用儘可能小,否則我會遵循BEA的建議。

如果2GB是合適的,或者如果使用空間的對象仍然在範圍內,那麼不可能從所給出的信息中說出 - 老一代會逐漸填滿,直到完全收集時空間不足將被調用。這個80%的數字來自哪裏?

使用以下JVM參數登錄GC細節,一個名爲gc.log:

-verbose:gc -XX:+PrintGCDetails -Xloggc:gc.log 

然後你就可以分析這個使用類似http://www.tagtraum.com/gcviewer.html