一、定义
垃圾收集器是JVM提供的自动管理内存分配和回收的机制。
二、常见的垃圾收集器
1、年轻代垃圾收集器
(1)Serial
(2)ParNew
(3)Parallel Scavenge(JDK8及之前默认的年轻代垃圾收集器)
2、老年代垃圾收集器
(1)CMS
A、定义
CMS是一款并发的老年代垃圾收集器。CMS采用的垃圾收集算法是标记-清除。
B、垃圾收集过程
垃圾收集过程主要有4个阶段,分别是:初始标记、并发标记、重新标记、并发清理。其中,初始标记和重新标记需要STW(暂停程序),剩下的2个阶段可以与应用线程交替执行。
-
初始标记:(单线程,需要STW)标记和GC Roots直接关联的对象;
-
并发标记:(单线程)进行GC Roots Tracing的过程,和用户线程同时运行;
-
重新标记:(多线程,需要STW)修正由于并发标记期间用户程序继续运行导致部分对象的标记产生变动的那一部分对象的标记记录(该过程只对并发标记阶段改动过的对象做标记)。
-
并发清除:(单线程)和用户线程同时运行,清理掉标记阶段标记的垃圾对象;
(2)Serial Old(JDK8之前默认的老年代垃圾收集器)
(3)Parallel Old(JDK8默认的老年代垃圾收集器)
3、堆垃圾收集器
(1)G1(JDK9及之后默认的垃圾收集器)
(2)为什么引入G1
【【全360集】强推!2024最细Java面试八股文全套教程,Java面试水平猛涨!!别再走弯路了,逼自己一周学完,从0基础小白到java面试大神只要这套就够了!】 https://www.bilibili.com/video/BV19i421Q7er/?p=24&share_source=copy_web&vd_source=8933594f62a26ba490437ea3b533d038
三、问题
1、Parallel Old和CMS的区别
四、垃圾收集器选型
【【全360集】强推!2024最细Java面试八股文全套教程,Java面试水平猛涨!!别再走弯路了,逼自己一周学完,从0基础小白到java面试大神只要这套就够了!】 https://www.bilibili.com/video/BV19i421Q7er/?p=25&share_source=copy_web&vd_source=8933594f62a26ba490437ea3b533d038
参考地址: