G1(Garbage First) 是一款面向服務端應用的垃圾收集器,也是當今收集器技術(shù)發(fā)展的最前沿的成果之一。
特征
1. 并行與并發(fā)
G1能充分利用多CPU、多核環(huán)境的優(yōu)勢,縮短GC停頓時間。
2. 分代收集
分代的概念在G1中保留,雖然G1不需要其他收集器配合就能獨立管理整個GC堆,但它能夠采用不同的方式處理新創(chuàng)建的對象和已經(jīng)存活了一段時間、熬過多次GC的舊對象,以獲取更好的收集效果。
3. 空間整合
G1從整體上看是基于”標記-整理“算法實現(xiàn)的收集器,從局部上(兩個Region之間)看是基于”復制“算法實現(xiàn)的,這意味著G1運作期間不會產(chǎn)生內(nèi)存空間碎片,收集后能提供規(guī)整的可用內(nèi)存。
4. 可預測的停頓
降低停頓時間是CMS和G1共同的關(guān)注點,但G1除了追求低停頓外,還能建立可預測的停頓時間模型:能讓使用者明確指定在長度為M毫秒的時間片段內(nèi),消耗在垃圾收集上的時間不得超過N毫秒。
可預測的停頓
G1之所以能夠建立可預測的時間停頓模型,是因為它可以有計劃地避免在整個Java堆中進行全區(qū)域的垃圾收集。
G1跟蹤各個Region里面的垃圾堆積的價值大小,在后臺維護一個優(yōu)先級列表,每次根據(jù)允許的收集時間,優(yōu)先回收價值最大的Region。
未完待續(xù)