JVM四種垃圾收集器

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的發生

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

相關文章
相關標籤/搜索