JVM垃圾收集器的分类

156 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

读前福利,最全pdf获取

联系我

垃圾收集器的分类

按线程数划分

按线程数划分(指的是垃圾收集线程),可以分为串行垃圾收集器和并行垃圾收集器。

image-20220419221024170.png

串行垃圾收集器是指在同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时用户线程被暂停,直到垃圾收集完成。

  • 在单 CPU 处理器或者较小的应用内存等硬件平台不是特别优秀的场合,串行垃圾收集器的性能表现可以超过并行垃圾收集器。所以,串行垃圾收集默认被应用在客户端 Client 模式下的 JVM 中。
  • 在并发能力比较强的 CPU 上,并行垃圾收集器产生的停顿时间要短于串行垃圾收集器。

和串行收集相反,并行收集可以运用多个 CPU 同时执行垃圾回收,因此提升了应用的吞吐量,不过并行收集仍然和串行收集一样,采用独占式(Stop The World)。

按工作模式划分

按照工作模式,可以分为并发式垃圾回收器和独占式垃圾回收器。

  • 并发式垃圾收集器的收集线程与用户线程交替工作,以尽可能的减少应用程序的停顿时间。
  • 独占式垃圾收集器的收集线程一旦运行,就会停止所有的用户线程,直到垃圾收集过程结束。

按碎片处理方式划分

按照碎片处理的方式,可以划分为压缩式垃圾收集器和非压缩式垃圾收集器。

  • 压缩式垃圾收集器会在收集完成后,对存活对象进行压缩整理,消除回收后的碎片。
  • 非压缩式垃圾收集器不会进行碎片整理的操作。

按照工作的内存区间划分

按照工作的内存区间分,可以分为年轻代垃圾收集器和老年代垃圾收集器。