歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java虛擬機的垃圾收集器之新生代收集器

Java虛擬機的垃圾收集器之新生代收集器

日期:2017/3/1 9:05:25   编辑:Linux編程

hotspot虛擬機的收集器之新生代收集器

hotspot垃圾收集器主要有七種:如圖所示:

圖中上面部分是新生代的垃圾收集器,下面部分表示老年代的垃圾收集器,兩個垃圾收集器的之間的連線表示兩個收集器搭配使用。

serial收集器

serial收集器是最基本發展最悠久的收集器。serial收集器是一個單線程的收集器,但他的“單線程”的意義並不僅僅只會使用一個cpu或者一條線程去完成垃圾收集工作,更重要的是在他進行垃圾收集時,必須暫停其他所有的工作線程,直到收集結束。

serial/serial Old收集器運行示意圖

serial的優點:簡單有效(與其他收集器的單線程比),對於限定單個cpu的環境來說,serial收集器由於沒有線程交互的開銷,專心做垃圾收集自然可以獲得最高的單線程的收集效率。serial收集期對於運行在client模式下的虛擬機來說是一個很好的選擇。

ParNew收集器

ParNew收集器其實就是serial收集器的多線程版,除了使用對線程進行垃圾回收收集之外,其余包括serial收集器可用的所有控制參數、收集算法、stop the world、對象分配規則、回收策略等都和serial收集器完全一樣。

ParNew/serial Old 收集器運行示意圖

ParNew收集器的優缺點:ParNew收集器在單cpu的環境中絕對不會比serial好,甚至由於存在線程交互的開銷,該收集器在通過超線程技術 實現的兩個cpu的環境中都不能百分之百保證超過serial收集器。當然隨著cpu的數量增加,他對於GC時系統資源的利用還是很有好處的。

Parallel Scavenge收集器

Parallel Scavenge收集器也是使用復制算法的收集器
Parallel Scavenge的特點:Parallel Scavenge關注與其他收集器不同,CMS等收集器的關注點是盡可能地縮短垃圾收集時用戶線程的停頓時間,而Parallel Scavenge收集器的目標則是達到一個可控制的吞吐量,所謂的吞吐量就是CPU用於運行用戶代碼的時間與CPU總耗時間的比值,即吞吐量 = 運行用戶代碼時間/(運行用戶代碼時間+垃圾收集時間)。

Copyright © Linux教程網 All Rights Reserved