JVM四種垃圾收集器

Serial

是什麼:使用單線程清理堆,Client虛擬機默認

能做什麼:適用於單CPU、應用程序內存小於100MB的場景

爲什麼:Minor GC和Full GC都會使應用線程暫停,但因爲堆的總量小,影響輕微,其他收集器在面對這種情況的時候也無法發揮優勢

Throughput

是什麼:使用多線程清除及壓縮整理堆,Server虛擬機默認

能做什麼:適用大多數場景,對90%、99%響應時間要求高的應用

爲什麼:多線程的方式處理Minor GC和Full GC使得處理速度提升,同時在Full GC時會對老年的壓縮整理

CMS

是什麼:啓用後臺線程定期對老年代進行掃描,屬於Concurrent垃圾收集器

能做什麼:降低Full GC的可能性,從而減少應用線程的停頓,對平均響應時間要求高的應用

爲什麼:耗費額外的CPU資源運行後臺線程,對堆的情況進行掃描,同時對於清理中產生的碎屏不進行整理,所以應用的停頓時間會降低

G1

是什麼:將堆劃分爲若干區域的後臺線程收集器,屬於Concurrent垃圾收集器

能做什麼:避免處理超大堆時產生的時間停頓,降低Full GC的發生

爲什麼:將大堆劃分爲若干區域後,在老年代的垃圾回收中,啓用後臺線程,每次只對垃圾較多的分區進行垃圾回收,所以速度快。回收時舊區域剩餘數據會複製到新區域,在此過程中就區域數據扔可使用,清理後只需改變指向,所以無需停頓應用線程

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