如果你的應用可以忍受full gc帶來的停頓,throught收集器(即並行gc)能獲得最高的效能。
同是他使用cpu和堆的大小都比其他的收集器少(當然不包括serial收集器,它的使用場景太有限)。
如果無法忍受full gc帶來的停頓,如果可用堆較小,可以選擇cms或g1,如果可用堆較大,建議使用g1。
1. 對於高負荷的應用,若gc時間不超過3%, 調優gc的優化空間比較有限,建議其他地方入手。
2. 如果停頓時間與目標接近,你需要調整最大停頓時間。如果差距很大。
建議縮小新生代的大小(如果是fullgc的導致,則減少老年代大小),這樣停頓次數增加,但單次停頓時間短了。
幾點總結:
所有**演算法對新生代的**都需要"stop-the-world"。
serial old,throught收集器收集對於老年代的**,需要"stop-the-world"。
cms收集器在cpu不足或因碎片無法裝載物件時,會退變成單執行緒的serial old。
g1收集器因為老年代也分幾個區,可能執行區與區之間copy迴改,一定程度減少碎片問題。
當cpu充足時,cms可能表現出比throught收集器更好的吞吐量。
JVM系列之Trace跟蹤GC(一)
首先,我們需要創造乙個gc 的條件,正常而言,還真難創造出來。所以,我們必須借助jvm啟動引數。無容置疑,堆空間大小的引數無非就是xms和xmx。xms jvm堆空間初始大小,這不是我們想要的 xmx jvm最大堆空間,這個才是我們需要的 注 xmx引數不宜過小,過小的堆空間會導致jvm無法啟動,極...
JVM的GC中物件的age以及JVM記憶體的分配策略
young generation中的gc叫minor gc,eden中的物件拷貝到s。old generation中的gc叫full gc。age,官方文件預設為15,age也相當於計數器,每次gc,age 1,age代表gc的次數。在gc時,s中的物件的age一樣的這批資料大於s空間1 2的話,此...
JVM的GC機制及JVM的調優方法
記憶體管理和垃圾 是jvm非常關鍵的點,對j a效能的剖析而言,了解記憶體管理和垃圾 的基本策略非常重要。1.在程式執行過程當中,會建立大量的物件,這些物件,大部分是短週期的物件,小部分是長週期的物件,對於短週期的物件,需要頻繁地進行垃圾 以保證無用對 象盡早被釋放掉,對於長週期物件,則不需要頻率垃...