Serial收集器是最基本,发展历史最悠久的单线程收集器
在gc进行的过程中,CPU要停下所有的事情去处理这些,会引起卡顿
但是年代久远的电脑内存非常小,在1998年那时候的电脑都是16M左右的内存,就拿ARPG鼻祖《暗黑破坏神1》来说,和Java出的年份差不多,那是要求的电脑配置也就8M到16M内存
在gc中,就算扫描一遍全部内存时间非常少,卡顿时间非常少
Serial收集器,针对内存几十兆或一两百兆的新生代内存gc,停顿时间能控制在一百毫秒内,更别提那时候那么小的电脑内存了
但是随着后来的内存渐渐变大,尤其是现在服务器都远远超过8G了,gc时间会非常长,这可不行,就产生了后面诸如G1垃圾回收器针对高内存的回收方法
Serial收集器的总体原理图如下:
优点:算法简单,内存占用少,CPU不用切换进程,导致上下文切换时间短,总体效率高
缺点:GC阶段卡顿
Serial Old收集器使用的是标记清除算法(Mark-Sweep);
可以看见会产生大量的内存碎片,但是不用复制,开销小
Serial收集器使用的是标记-复制算法;
这种算法浪费了内存空间,并且复制也需要电脑资源,但是不会产生内存碎片