Java中的垃圾收集器如何設置 — JVM系列(十)

JVM中的重要參數

我們已經知道了有哪些垃圾收集器,那麼它們在JDK中又是如何設置的呢?

參數 功能
UseParNewGC 使用ParNew + Serial Old
UseSerialGC 虛擬機運行在Client模式下的默認值,是Serial + Serial Old
UseParallelGC 虛擬機運行在Server模式下的默認值,Parallel Scavenge + Serial Old
UserParallelOldGC 使用Parallel Scavenge + Parallel Old,追求吞吐量的的最佳配合
UseConcMarkSweepGC ParNew + CMS + Serial Old組合的收集器,CMS運行期間預留的內存無法滿足程序需要,就會出現一次Concurrent Mode Failure失敗,這時虛擬機將啓動後備預案。臨時啓用Serial Old收集器來重新進行老年代的垃圾收集。
ParallelGCThreads 指定ParNew收集器的線程數目。
MaxGCPauseMillis Parallel Scavenge中最大垃圾收集停頓時間,毫秒數。
GCTimeRatio Parallel Scavenge中設置吞吐量大小的參數,例如設置爲99,允許的最大垃圾收集時間就是:1/(1+99)。
UseAdaptiveSizePolicy Parallel Scavenge中的參數,這是一個開關參數,會動態的調節新生代老年代中的參數,以提供合適的停頓時間或者最大的吞吐量。只需要設置基本的數據內存,如-Xms等。
CMSInitiatingOccupancyFraction 設置CMS收集器在老年代空間被使用多少後觸發垃圾收集。默認值爲68%。
UseCMSCompactAtFullCollection CMS收集器默認開啓,在CMS收集器頂不住要進行FullGC時開啓內存碎片的合併整理過程,內存整理的過程是無法併發的。空間碎片問題沒有了,但停頓時間不得不變長。設置CMS收集器在完成垃圾收集後再啓動一次內存碎片整理。
CMSFullGCsBeforeCompaction 用於設置CMS收集器執行多少次不壓縮的FullGC後,跟着來一次帶壓縮的(默認值爲0,表示每次進入Full GC時都進行碎片整理)
SurvivorRatio 新生代中Eden區與Survivor區域的比值
PretenureSizeThreshold 大於這個參數的對象將直接進入老年代分配。
MaxTenuringThreshold 晉升到老年代的年齡。
HandlePromotionFailure 是否允許分配擔保失敗,即老年代的剩餘空間不足以應付新生代的整個Eden和Survivor的所有對象都存活的極端情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章