Serial 收集器是最基础、历史最悠久的收集器,曾经(JDK1.3.1之前) 是HotSpot 新生代收集器的唯一选择,对应的老年代是 Serial Old 收集器。
Serial:基于 复制算法,Serial Old:基于标记-整理算法。
两大特点:
1.使用一个处理器或一条收集线程取完成垃圾收集工作;
2.进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。
缺点:
多线程环境下,效率低下。
优点:
1.简单而高效,迄今为止仍然时HotSpot 虚拟机允许在 客户端模式(也就是32bit)下的默认新生代收集器;
2.在所有收集器里额外内存消耗最小。
测试目的:多线程环境下 同一程序 parallelGC和 serial 回收器比较
测试环境: JDK8 IDEA
测试介绍:
+UseParallelGC 新生代使用 parallel scavenge,老年代使用 serialOld(PS markSweep)
+UserSerialGC 新生代使用 serial ,老年代使用 serialOld
测试过程:
-XX:+UseParallelGC parallelGC,这里可以不用加该参数 ,该垃圾回收期为 jdk8默认的垃圾回收器
多线程环境下限制GC回收线程数为1,总花费时间上升
多线程环境下, Serial 效率较低
总结:多线程环境下不建议使用 serial 收集器,但是单线程环境下建议使用。