Java虛擬機——ParNew收集器

1:是什麼

      ParNew 收集器其實就是 Serial 收集器的多線程版本,除了使⽤多條線程進⾏垃圾收集之 外,其餘⾏爲包括 Serial 收集器可⽤的所有控制參數(例如:-XX: SurvivorRatio-XX: PretenureSize' Threshold、-XX: HandlePromotionFailure 等)、收集算法、Stop The World、對象分配規則、回收策略等都與 Serial 收集器完全⼀樣,在實現上,這兩種收集器 也共⽤了相當多的代碼

 

2:特點 

      ParNew 收集器除了多線程收集之外,其他與 Serial 收集器相⽐並沒有太多創新之處,但它 卻是許多運⾏在 Server 模式下的虛擬機中⾸選的新⽣代收集器,其中有⼀個與性能⽆關但很 重要的原因是,除了 Serial 收集器外,⽬前只有它能與 CMS 收集器配合⼯作。 使⽤-XX: ParallelGCThreads 參數來限制垃圾收集的線程數 多線程操作存在上下⽂切換的問題,所以建議將-XX: ParallelGCThreads設置成和CPU核數相 同,如果設置太多的話就會產⽣上下⽂切換消耗

3:併發與並⾏的概念 

並⾏(Parallel):指多條垃圾收集線程並⾏⼯作,但此時⽤戶線程仍然處於等待狀態。

併發(Concurrent):指⽤戶線程與垃圾收集線程同時執⾏(但不⼀定是並⾏的,可能 會交替執⾏),⽤戶程序在繼續運⾏,⽽垃圾收集程序運⾏於另⼀個 CPU 上,這次指的是CMS垃圾回收器

4:應用場景

        在Server模式下,ParNew收集器是一個非常重要的收集器,因爲除Serial外,目前只有它能與CMS收集器配合工作;
但在單個CPU環境中,不會比Serail收集器有更好的效果,因爲存在線程交互開銷。


5:設置參數

 "-XX:+UseConcMarkSweepGC":指定使用CMS後,會默認使用ParNew作爲新生代收集器;
 "-XX:+UseParNewGC":強制指定使用ParNew;    
 "-XX:ParallelGCThreads":指定垃圾收集的線程數量,ParNew默認開啓的收集線程與CPU的數量相同;
     

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