https://www.bilibili.com/video/BV1S44y1z7on?p=4

垃圾回收算法是内存回收的方法论,垃圾回收器是算法的落地实现。

JDK8中默认使用组合是:Parallel Scavenge GC、Parallel Old GC JDK9默认是用 G1 为垃圾收集器 JDK14 弃用了:Parallel Scavenge GC、Parallel Old GC 移除了 CMS GC

垃圾回收算法分类两类,第一类算法判断对象生死算法,如引用计数法、可达性分析算法。第二类是收集死亡对象方法,如标记-清除算法、标记-复制算法、标记-整理算法。

一般根据堆内存不同代的特点应用不同的算法进行分代垃圾回收。垃圾回收算法是内存回收的方法论,垃圾回收器是算法的落地实现。

垃圾收集器分类

串行垃圾回收(Serial)

串行垃圾回收是为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程,不适合交互性强的服务器环境。

并行垃圾回收(Parallel)

多个垃圾收集器线程并行工作,同样会暂停用户线程,适用于科学计算、大数据后台处理等交互场景。

并发垃圾回收(CMS concurrent Mark Sweep)

用户线程和垃圾回收线程同时执行,不一定是并行的,可能是交替执行,可能一边垃圾回收,一边运行应用线程,不需要停顿用户线程,互联网应用程序中经常使用,适用对响应时间有要求的场景。

G1 垃圾回收