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的所有對象都存活的極端情況。 |