JVM GC发展史
1、JVM垃圾收集器
jvm发展到现在有这么些垃圾收集器,虽然有些已经被新版本的jdk舍弃了,这两年来更新的jdk中,主要是针对G1与ZGC的容器优化中,其他容器要么被移除,要么被弃用。不过现在市场上的项目很多都停留在jdk1.8阶段,包括面试问题大多数都是以jdk1.8为主要问题版本分析。比如jdk默认的是Parallel Scavenge收集器,默认Parallel Scavenge+Parallel Old GC组合。
1.1、Serial收集器
Serial(串行)收集器收集器是最基本、历史最悠久的垃圾收集器了(在jdk1.3.1版本之前Serial是唯一一个年轻代的GC容器)。大家看名字就知道这个收集器是一个单线程收集器了。它的 “单线程” 的意义不仅仅意味着它只会使用一条垃圾收集线程去完成垃圾收集工作,更重要的是它在进行垃圾收集工作的时候必须暂停其他所有的工作线程( “Stop The World” ),直到它收集结束。这就意味着每次GC时都会给用户带来一定的卡顿现象造成不良的用户体验。他相比于其他收集器也有一定的优点:简单而高效(与其他收集器的单线程相比&#