serial收集器、ParNew收集器
-
serial垃圾收集器
-
Serial是⼀个单线程的垃圾收集器
-
特点
“Stop The World”,它进⾏垃圾收集时,必须暂停其他所有的⼯作线程,直到它收集结束。在⽤户不可⻅的情况下把⽤户正常⼯作的线程全部停掉
使⽤场景:多⽤于桌⾯应⽤,Client端的垃圾回收器
桌⾯应⽤内存⼩,进⾏垃圾回收的时间⽐较短,只要不频繁发⽣停顿就可以接受
-
图解
-
parnew垃圾收集器
ParNew 收集器其实就是 Serial 收集器的多线程版本,除了使⽤多条线程进⾏垃圾收集之外,其余⾏为包括 Serial 收集器可⽤的所有控制参数
(例如:-XX: SurvivorRatio、-XX:PretenureSize' Threshold、-XX: HandlePromotionFailure 等)、收集算法、Stop TheWorld、
对象分配规则、回收策略等都与 Serial 收集器完全⼀样,在实现上,这两种收集器也共⽤了相当多的代码
-
图解
-
特点
ParNew 收集器除了多线程收集之外,其他与 Serial 收集器相⽐并没有太多创新之处,但它却是许多运⾏在 Server 模式下的虚拟机中⾸选的新⽣代收集器,
其中有⼀个与性能⽆关但很重要的原因是,除了 Serial 收集器外,⽬前只有它能与 CMS 收集器配合⼯作。
使⽤-XX: ParallelGCThreads 参数来限制垃圾收集的线程数
多线程操作存在上下⽂切换的问题,所以建议将-XX: ParallelGCThreads设置成和CPU核数相同,如果设置太多的话就会产⽣上下⽂切换消耗
- 并发与并⾏
并⾏(Parallel):指多条垃圾收集线程并⾏⼯作,但此时⽤户线程仍然处于等待状态。
并发(Concurrent):指⽤户线程与垃圾收集线程同时执⾏(但不⼀定是并⾏的,可能会交替执⾏),⽤户程序在继续运⾏,⽽垃圾收集程序运⾏于另⼀个 CPU 上