Serial回收器(串行回收)
一、概述:
Serial 收集器是最基本的、历史最悠久的垃圾收集器。JDK1.3之前回收新生代唯一的选择。
二、client默认的垃圾收集器:
Serial收集器作为HotSpot中Client模式下的默认新生代垃圾收集器。
三、采用的机制:
Serial 收集器采用复制算法、串行回收和“Stop-the-World”机制的方式执行内存回收。
四、老年代的垃圾收集:
除了年轻代之外,Serial收集器还提供于执行老年代的
Serial Old 收集器。Serial Old 收集器同样也采用了串行回收和“Stop-the-World”机制,只不过内存回收算法使用的是标记-压缩算法。
a、Serial Old 是运行在Client模式下默认的老年代的垃圾回收器
b、Serial Old在Server模式下主要有两个用途:
(1)与新生代的Parallel Scavenge配合使用。
(2)作为老年代CMS收集器的后备垃圾收集方案。
六、图解:
七、优缺点:
优势:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。
运行在Client模式下的虚拟机是个不错的选择。
在用户的桌面应用场景中,可用内存一般不大(几十MB至一两百MB),可以在较短时间内完成垃圾收集,只要不频繁发生,使用串行回收器是可以接收的。
八、程序中设置:
在HotSpot虚拟机中,使用-XX:+UserSerialGC参数可以指定年轻代和老年代都使用串行收集器。
等价于新生代使用Serial GC,并且老年代使用Serial Old GC.
九、使用场景:
一般限定单核Cpu才可以用。现在都不是单核的了
对于交互较强的应用而言,这种垃圾收集器是不能接受的。一般在Java Web应用程序中是不会采用串行垃圾收集器的