2011-12-22 23 views
2

我修改catalina.sh這個頂部:我的Tomcat運行JMAP說明的pid

export CATALINA_OPTS="-Xms512m -Xmx1500m" 

我有我的服務器上4GB內存,和我的負載測試,所以我想給一切tomcat差不多。

我應該調整哪些其他JVM設置以每秒最大化請求?

PerMem重要嗎?

我對下面的jmap輸出有點困惑。

我將Xmx設置爲1500megs,它似乎已更新,因爲我看到'maxheapsize'是1500m。

但是它顯示了我已經使用了多少堆以及多少空閒?

我看到在堆使用下63mb(伊甸園),那是什麼?

enter image description here

回答

1

熱點(讀太陽)堆分成幾個部分,所以當你指定-Xmx你真的設定最高爲整個堆,而不是它的一部分。

伊甸園是整個堆的一小部分,其保持較小以確保應用程序在收集期間不會停留很長時間。所有新對象(適合)都會先進入伊甸園,如果它們不是垃圾,它們將被提升爲倖存者空間或任職期限。

倖存者(To/From space)是GC嘗試獲取可能是垃圾的物體的地方,但在伊甸園收集期間無法快速制定出來,存在兩個充當緩衝區的生存空間,如一個由GC填補,另一個排除在任職期間,如果你要看圖表,你會看到這兩個空間在使用中翻轉過來。

使用期限是長壽命對象所在的地方,這個堆通常是相當大的,並且通過與伊甸園不同的算法收集。

Perm與堆的其餘部分有些分離,它是常量字符串(任何已被「interned」的字符串)和類字節碼存在的地方。您需要對其進行調優的情況非常罕見,通常只需要增加大型應用程序或者(自動生成代碼的應用程序)。

如果沒有暫停時間,我無法確定您的JVM設置是否正確,但是從您的堆大小看來,您似乎使用了大約1.2 Gb的分配。除非你的應用程序看到任何令人討厭的暫停,否則我會認爲你已經完成了GC調優(人們常常在大量旗幟上進入城市而沒有真正理解他們做什麼,將旗幟留下,直到你向自己證明他們是需要)

您的目標是在Web應用程序上實現低延遲,因此使用ConcurrentMarkSweep作爲終身收集器是一種明智的選擇。