垃圾收集器

垃圾收集算法是內存回收的方法論,算法

  • 垃圾收集器是內存回收的具體實現。
  • Serial 收集器:最基本,
    • 發展歷史最悠久的單線程收集器。jdk1.3 
    • 它在進行垃圾收集時,必須暫停全部其餘全部的工做線程。
      • 「stop the world 「直到它收集結束。 
  • ParNew 收集器:Serial收集器的多線程版本
    • 除了使用多條線程進行垃圾收集外,其他和Serial幾乎徹底同樣。
    • 是運行在Server模式下的虛擬機中首選的新生代收集器
    • 同時,也只有Serial和ParNew 能和CMS收集器配合工做。
  • Serial Old 收集器:Serial收集器的老年代版本,
    • 是一個單線程使用標記-整理算法的收集器。
    • 主要給Client模式下的虛擬機使用。
  • Parallel Old :parallel Scaenge 收集器的老年代版本,
    • 使用多線程和標記-整理算法。
  • CMS收集器 
    • 一種以獲取最短回收停頓時間爲目標的收集器。
    • 很大一部分應用於互聯網站或則B/S系統的服務端。
    • 基於標記清除算法實現。
      • 主要有四個步驟,
        • 初始標記,
          • 只是標記一下GC Roots能直接關聯到的對象速度很快。 
        • 併發標記,
          • 進行GC RootsTracing的過程,與用戶進程同步。
        • 從新標記,
          • 修正併發標記期間
            • 因用戶程序繼續運做
            • 而致使標記產生變更的
            • 那一部分對象的標記記錄,
          • 須要」stop the world」.
          • 這個階段的停頓時間通常會比初始標記階段稍長一些,
            • 遠比併發標記的時間短
        • 併發清除。
          • 與用戶進程同步進行。
    • 因爲整個過程當中耗時最長的併發標記和併發清除過程收集器線程均可以與用戶線程一塊兒工做,
      • 因此, 從整體上 來講, CMS收集器的內存回收過程是與用戶線程一塊兒併發執行的。
    • CMS也有很明顯的缺點,主要是 
      • 1對CPU資源很是敏感
      • 2沒法處理浮動垃圾
        • 【從新標記解決的是將誤標爲不可達對象標記爲可達,可是會漏標不可達對象,這部分對象爲浮動垃圾】 
      • 3使用標記清除算法會產生大量碎片
  • G1 收集器:
    • 一個面向服務器應用的垃圾收集器,
    • 主要有如下優勢,
      • 並行與併發,
      • 分代收集,
      • 空間整合(總體上標記整理,局部是複製算法),
        • 可預測的停頓(相比CMS的一大優點)。
      • 將堆劃爲多個大小相等的獨立區域(region),
        • 新生代老年代再也不物理隔離了.
相關文章
相關標籤/搜索