知道有哪些垃圾收集器吗?

知道有哪些垃圾收集器吗?
主要垃圾收集器如下,图中标出了它们的工作区域、垃圾收集算法,以及配合关系。
这些收集器中,面试的重点是两个——CMS和G1。
- CMS收集器
CMS收集器是一款历史悠久且重要的收集器。
如同它的名字(并发标记清除),它是一个并发的垃圾收集器,使用多个线程进行垃圾收集。并且在垃圾收集期间,尽可能减少对应用程序的停顿时间,而不是完全停止应用程序的执行——这就是所谓的“Stop The World”。
CMS/Serial Old收集器的运行过程如图:
- G1收集器
G1收集器是一款全新的垃圾收集器,旨在取代CMS收集器。
G1收集器使用了分代收集和区域化管理的方式,将堆内存划分为多个相等大小的区域。它使用增量式的标记-整理算法,在每次垃圾收集时,只处理一部分区域,以减少停顿时间。G1收集器还具备智能化的垃圾收集策略,可以根据应用程序的运行情况动态调整垃圾收集的目标和优先级。
- Parallel Scavenge
Parallel Scavenge收集器是一款新生代收集器,基于标记-复制算法实现,并且能够并行收集。和ParNew有些类似,但Parallel Scavenge主要关注的是垃圾收集的吞吐量——吞吐量是CPU用于运行用户代码的时间与总消耗时间的比值,比值越大,说明垃圾收集的占比越小。
- Serial Old
Serial Old 是 Serial 收集器的老年代版本,它同样是一个单线程收集器,使用标记-整理算法。
- Parallel Old
Parallel Old 是 Parallel Scavenge 收集器的老年代版本,支持多线程并发收集,基于标记-整理算法实现。
- CMS 收集器
CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,同样是老年代的收集器,采用标记-清除算法。
- Garbage First 收集器
Garbage First(简称 G1)收集器是垃圾收集器的一个颠覆性的产物,它开创了局部收集的设计思路和基于 Region 的内存布局形式。