2011-10-24 24 views
0

什麼是最常用的一套GC參數?服務器應用程序的最簡單的JVM GC參數集是什麼?

+3

我不確定這個問題是否真的在話題上。無論哪種方式,您都應該在線下方發佈一切,作爲您的問題的答案。你可以回答你自己的問題! –

+1

由於init標記階段的單線程性質以及如何在icms模式下的清除之間調度,所以不建議在任何現代系統(超過1個內核)上使用icms – Matt

+0

也應該將這些日誌始終保存在測試中6g堆的一攬子聲明是相當無意義的,例如壓縮版的影響 – Matt

回答

-1

我想我會分享一些已經適用於我過去調整過的服務器應用程序的設置。這些已經在Sun/Oracle JDK 6中(撰寫本文時)。

這可能是最常用的一組GC參數。當然,這些設置在很大程度上取決於應用程序的性質 - 對象生命週期,分配率,參考/指針的複雜程度等。如果您的體驗有任何不同,請分享它們。


基本設置。最小和最大堆是相同的。假設64位機器。大於4-6g的堆將需要仔細調整和測試。 6g不是強制性的
-server -Xms6g -Xmx6g -XX:MaxPermSize=256m

選項A(並行收集器):高吞吐量,面向批處理的工作。明顯的週期性暫停。
-XX:+UseParallelGC

選項B(CMS):較低的吞吐量,較低的延遲,連續處理。經常不可思議的微停頓,罕見的長時間停頓。
-XX:+UseParNewGC -XX:+ParallelRefProcEnabled -XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=250 -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled

在UAT/SAT /前期製作期間的額外監控。使用HPJmeterGCViewer查看此日誌。
-verbose:gc -Xloggc:my_gc_output.hprof -XX:+PrintGCTimeStamps -XX:+PrintGCDetails


乾杯!

+0

以及iCMS不被推薦[再](http://blogs.oracle.com/jonthecollector/entry/really_icms_really),特別是因爲大多數服務器有多個核心/線程。 –

0

所述的問題太模糊,無法回答理智。這取決於你的工作量,需求和目標。

一般來說,我會從-Xmx(您需要的RAM的數量)g和-XX:UseCompressedOops開始。除此之外,做一個測試用例。一次一個更改測量其效果您自己的工作量

0

這個問題真的很含糊,AFAIK沒有適用於所有/大多數應用程序的一套設置。順便說一句,除非我錯了,從JDK 6開始,JVM的自我調節能力也有限。您可以採取的步驟如下:

第1步。如果您「知道」您的應用程序將需要比默認更多的Xmx和MaxPermSize。 第2步。運行應用程序並觀看jstat。如果GC模式不合格,請繼續步驟3 步驟3.根據您的觀察結果,一次調整一個設置。 第4步。重複 - 轉到第2步:-)

這是我看到調整工作的唯一途徑。如果您使用的是產品(如Weblogic,Websphere),那麼提供者可能會推薦一些可以從頭開始的基本設置,但通常您會希望從默認設置開始。

此致敬禮

相關問題