jvm-垃圾回收器學習筆記

垃圾收集器:
1.serial收集器:收集新生代,採用複製算法,單線程,需要stop world。
2.serial old 收集器:收集老年代,採用標記整理算法,單線程,需要stop the world。
3.parnew收集器:serial的的多線程版本。
4.paraller Scavenge 收集器:收集新生代,採用複製算法,多線程,與parNew的區別是
它關注吞吐量:吞吐量=運行用戶代碼的時間/(運行用戶代碼的時間+垃圾收集的時間)
5.paraller old 收集器是paraller scavenge 的老年代版本。
6.CMS收集器:標記清理算法實現的(空間碎片),以獲取去最短停頓時間爲目標的收集器。
(1)初始標記。需要stop the world,僅標記和GC roots 能直接關聯的對象。
(2)併發標記。併發標記就是對GC Root是進行trancing的過程,不需要Stop用戶線程。
(3)重新標記。需要stop the world,爲了修正修正併發標記期間因用戶線程繼續運作而導
致變動的那部分對象
(4)標記清除。清楚對象。
7.G1(Garbage-first)收集器:標記整理算法,把新生代和老年代分成若干region,按照每個region
進行回收,避免在這個java堆中進行全區域回收。G1會跟蹤每個Region垃圾堆積的價值大小(回收
所獲得的空間大小及所需的時間的經驗值),在後臺維護一個優先列表,每次根據允許的收集時間,
優先回收價值最大的region。因此可以獲得儘可能高的收集效率,以及停頓時間可預期。
(1)初始標記
(2)併發標記
(3)最終標記
(4)篩選回收。(Stop the world ,其實可以併發執行,但是隻是收集一部分region,並且時間可控
停頓可以提高回收效率。)

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