Serial垃圾收集器是最根基的收集器,利用復制算法,單線程。
ParNew垃圾收集器其實是Serial收集器的多線程版本,也利用了復制算法,除了利用多線程進行垃圾收集以外,其他的行為和Serial收集器一樣,進行垃圾收受接管時也要停失落所有其它工作線程
Parallel Scavenge收集器也是一個新生代垃圾收集器,同樣利用復制算法,也是一個多線程的垃圾收集器。
Serial Old 是Serial收集器老年月版本,它同樣是個單線程的收集器,利用標識表記標幟-清算算法,這個收集器也本家兒如果運行在Client默認的java虛擬機默認的老年月垃圾收集器。
在Server模式下,本家兒要有兩個用途:
1.在JDK1.5之前版本中與新生代的Parallel Scavenge收集器搭配利用。
2.作為老年月中利用CMS收集器的后備垃圾收集方案。
新生代Paraller Scavenge 收集器與ParNew 收集器工作道理近似,都是多線程的收集器,都利用的是復制算法,在垃圾收集過程中都需要暫停所有其他工作線程。
Parallel Old 收集器是Parallel Scavenge 的老年月版本,利用多線程的標識表記標幟-清算算法,在JDK1.6才起頭供給。
1.6之前,新生代利用Parallel Scavenge 收集器只能搭配老年月的Serial Old收集器,只能包管新生代的吞吐量優先,無法包管整體的吞吐量,Parallel Old 恰是為了在老年月同樣供給吞吐量優先的垃圾收集器,若是系統對吞吐量要求較高,可以優先考慮新生代Parallel Scavenge 和老年月Parallel Old收集器搭配的策略
CMS收集器是一種老年月垃圾收集器,其最本家兒要方針是獲取最短垃圾收受接管剎時,和其他老年月收集器利用的標識表記標幟-清算算法分歧,它利用的是多線程的標識表記標幟-斷根算法。
最短的垃圾收集擱淺時候可覺得交互比力高的程序提高用戶體驗。
CMS工作機制比擬其他的垃圾收集器更為復雜,整體分為4個階段:
1.初始標識表記標幟:只是標識表記標幟下GC Roots能直接聯系關系的對象,速度很快,仍然需要暫停所有工作線程。
2.并發標識表記標幟:進行GC Roots跟蹤的過程,和用戶線程一路工作,不需要暫停工作線程。
3.從頭標識表記標幟:為了批改在并發標識表記標幟時代,因用戶程序繼續運行而導致標識表記標幟發生變更的那一部門對象的標識表記標幟記實,仍然需要暫停所有工作線程。
4.并發斷根:斷根GC Roots不成達對象,和用戶線程一路工作,不需要暫停工作線程。因為耗時最長的并發標識表記標幟和并發斷根過程中,垃圾收集線程可以和用戶線程一路并發工作,所以總體上來看CMS收集器的內存收受接管和用戶線程是一路并發地執行。
G1垃圾收集器 ,Garbage first 垃圾收集器是今朝垃圾收集器理論成長最前沿的當作果
END0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!