Serial回收器
一、串行回收
Serial收集器是最基本、历史悠久的垃圾收集器了,JDK1.3之前回收新生代唯一的选择。Serial收集器作为HotSpot中Client模式下的默认新生代垃圾收集器。Serial收集器采用复制算法、串行回收和"Stop-the World"机制的方式执行内存回收。除了年轻代之外,Serial收集器还提供用于执行老年代垃圾收集的Seral Old收集器,Serial Old收集器同样也采用了串行回收和"Stop-the-World"机制,只不过内存回收算法使用的是“标记-压缩(整理)”算法。
这种收集器是一个单线程的收集器,即垃圾收集时只有一个垃圾收集线程在工作,但是它的“单线程”不仅仅说明它只会使用一个CPU或者一条收集线程去完成垃圾收集工作,更重要的是在于它在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束(Stop-the-World)。
二、Serial Old用途
Serial Old是运行在Client模式下默认的老年代垃圾回收器。Serial Old在Server模式下主要有两个用途:①与新生代的Parallel Scavenge配合使用 ②作为老年代CMS收集器的后备来及手机方案。
三、总结
优势:简单而高效,对于限定单个CPU的环境来说,或者准确来说单核CPU情况下,Serial收集器由于没有线程交互开销,专心做垃圾收集自然可以获得最高的单线程收集效率。在用户的桌面应用场景中可用内存一般不大(几十MB至一两百MB),可以在较短时间内完成垃圾收集(几十ms至一百多ms),只要不频繁发生,使用串行回收器是可以接受的。
四、总结
这种垃圾收集器大家了解即可,现在已经不用串行的了,而且在限定单核CPU才可以使用,现在都不是单核的了。对于交互较强的应用,这种垃圾收集器是不能接受的,一般在Java Web应用程序中不会采用串行垃圾收集器的。