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的数量相同;
     

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