JVM垃圾收集器-ParNew收集器

今天我給大家講講ParNew收集器。

ParNew收集器

       ParNew收集器收集器其實就是Serial收集器的多線程版本,除了使用多線程進行垃圾收集之外,其餘行爲包括Serial收集器可用的所有控制參數、收集算法、Stop The world、對象分配規則、回收策略等都與Serial收集器完全一樣,實現上這兩種收集器也共用了相當多的代碼。ParNew收集器的工作過程如下圖所示。
JVM垃圾收集器-ParNew收集器

         ParNew收集器除了多線程收集之外,其他與Serial收集器相比並沒有太多創新之處,但它卻是許多運行在Server模式下的虛擬機中首選的新生代收集器,其中有一個與性能無關但很重要的原因是,除了Serial收集器外,目前只有它能與CMS收集器配合工作。在JDK1.5時期,HotSpot退出了一款在強交互應用中幾乎可成爲有劃時代意思的垃圾收集器————CMS收集器,這款收集器是HotSpot虛擬機中第一款真正意義上的併發收集器,它第一次實現了讓垃圾收集線程與用戶線程同時工作,用前面那個例子的話來說,就是做到來在你媽媽打掃房間的時候你還能同時往地上扔紙屑。

        ParNew收集器在單CPU的環境中絕對不會有比Serial收集器更好的效果,甚至由於存在線程交互的開銷,該收集器在通過多線程技術實現兩個CPU環境中都不能百分百地保證能超越Serial收集器。當然,隨着可用使用的CPU數量的增加,它對於GC時系統資源的利用還是很有好處的。它默認開啓收集線程數與CPU的數量相同,在CPU非常多的環境下,可用使用-XX:ParallelGCThreads參數來限制垃圾收集單線程數。

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章