Serial
多線程
是什麼:使用單線程清理堆,Client虛擬機默認ide
能作什麼:適用於單CPU、應用程序內存小於100MB的場景spa
爲何:Minor GC和Full GC都會使應用線程暫停,但由於堆的總量小,影響輕微,其餘收集器在面對這種狀況的時候也沒法發揮優點線程
Throughputorm
是什麼:使用多線程清除及壓縮整理堆,Server虛擬機默認內存
能作什麼:適用大多數場景,對90%、99%響應時間要求高的應用資源
爲何:多線程的方式處理Minor GC和Full GC使得處理速度提高,同時在Full GC時會對老年代壓縮整理虛擬機
CMSit
是什麼:啓用後臺線程按期對老年代進行掃描,屬於Concurrent垃圾收集器class
能作什麼:下降Full GC的可能性,從而減小應用線程的停頓,對平均響應時間要求高的應用
爲何:耗費額外的CPU資源運行後臺線程,對堆的狀況進行掃描,同時對於清理中產生的碎屏不進行整理,因此應用的停頓時間會下降
G1
是什麼:將堆劃分爲若干區域的後臺線程收集器,屬於Concurrent垃圾收集器
能作什麼:避免處理超大堆時產生的時間停頓,下降Full GC的發生
爲何:將大堆劃分爲若干區域後,在老年代的垃圾回收中,啓用後臺線程,每次只對垃圾較多的分區進行垃圾回收,因此速度快。回收時舊區域剩餘數據會複製到新區域,在此過程當中就區域數據扔可以使用,清理後只需改變指向,因此無需停頓應用線程