常用垃圾回收器

在這裏插入圖片描述
前常用的垃圾回收器有7個,按照工作的內存區間的不同,可以分爲3個新生代收集器和3個年老代收集器。G1比較特殊不分代

  • Serial(新生代串行收集器)
    使用複製算法的垃圾回收器,只能用於新生代。Serial回收器使用單線程進行垃圾回收。
    在 HotSpot 虛擬機中,使用-XX:+UseSerialGC 參數可以指定使用Serial(新生代串行收集器)+ Serial Old(老年代串行收集器)。當 JVM 在 Client 模式下運行時,它是默認的垃圾收集器。
  • ParNew(新生代並行收集器)
    Serial回收器的多線程版本,只能用於新生代。使用複製算法,多線程並行工作。在多CPU主機上的性能高於Serial,單CPU主機上的性能低於Serial。
    如果使用-XX:+UseParNewGC,表示ParNew(並行收集器)+ Serial Old(串行收集器)
  • Parallel Scavenge(新生代並行回收收集器)
    新生代並行回收收集器也是使用複製算法的收集器。從表面上看,它和並行收集器一樣都是多線程、獨佔式的收集器。但是,並行回收收集器有一個重要的特點:它非常關注系統的吞吐量。
  • Serial Old 收集器
    Serial收集器的老年版本,獨佔式,單線程,使用的是標記–整理算法,這個收集器的目的也是用於Client模式下的虛擬機使用。
  • Parallel Old收集器
    是Parallel Scavenge收集器的老年版本,使用多線程和標記整理算法,注重吞吐量優先,在注重吞吐量和CPU資源銘感的場合,都可以考慮Parallel Scavenge加Parallel Old收集器。
  • CMS收集器
    CMS收集器(Concurrent Mark Sweep)是一種一獲取最短回收停頓時間作爲目標的收集器,目前很大一部分的Java應用都集中在互聯網和B/S系統上,這類應用尤其重視服務的響應速度,希望系統停頓的時間最短。 使用多線程和標記清除算法。
  • G1收集器(不分代)
    基於標記整理算法,所以不會產生大量的空間碎片,而且他可以非常精確的控制停頓,G1收集器可以實現在基本不犧牲吞吐量的前提下完成低停頓的內存回收,這是由於它能極力的避免全區域的垃圾收集,之前的收集器進行收集的範圍都是整個新生代或者老年代,而G1收集器將整個內存堆分爲多個大小固定的獨立去,跟蹤這些區域裏垃圾對集成度,在後臺維護一個優先列表,每次根據允許的收集時間,優先收集垃圾最多的區域,區域劃分及有優先級的區域回收,保證了G1收集器在有限的時間內可以獲得極高的效率。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章