JVM垃圾收集器

簡介算法

     Java虛擬機規範中對垃圾收集器應該如何實現並無任何規定,所以不一樣的廠商、不一樣的版本的虛擬機所提供的垃圾收集器均可能會有很大的差異,而且通常都會提供參數供用戶根據本身的應用特色和要求組合出各個年代所使用的收集器。Sun HotSpot虛擬機1.6板虛擬機所包含的收集器以下所示:多線程

  • Serial收集器

單線程、新生代,複製算法收集器,工做原理示意圖:併發

  • ParNew收集器

多線程版本的Serial收集器,工做原理示意圖:線程

  • Parallel Scavenge收集器

和以上收集器同樣,也是新生代,複製算法,並行多線程的收集器,特色是可以精準控制吞吐量資源

  • Serial Old 收集器

基於標記-整理算法的老年代收集器,主要兩大用途以下:虛擬機

  1. 在JDK1.5以前的版本中與Parallel Scavenge 收集器搭配使用
  2. 做爲CMS收集器的後背預案

工做原理示意圖以下:原理

  • CMS收集器

CMS收集器是基於標記-清楚算法的,一種以獲取最短回收停頓時間偉目標的收集器並行

優勢:im

  1. 併發收集
  2. 低停頓

缺點:技術

  1. CMS收集器對CPU資源很是敏感
  2. CMS收集器沒法處理浮動垃圾,可能出現Concurrent Mode Failure 失敗而致使另外一次Full GC的產生
  3. 基於標記-清楚算法,容易產生大量空間碎片
  • G1收集器

當前收集器技術發展的作前沿成果,JDK1.7發佈後的成熟商用版本的收集器

優勢:

  1. 基於標記-整理算法,不會產生空間碎片
  2. 能夠很是準確的控制停頓
相關文章
相關標籤/搜索