JVM 中有哪些垃圾收集器
JVM 中有哪些垃圾收集器
程序员朱永胜有时博客内容会有变动,首发博客是最新的,其他博客地址可能未同步,请认准
https://blog.zysicyj.top
在 Java 虚拟机(JVM)中,有以下几种常见的垃圾收集器:
Serial 收集器 :Serial 收集器是最基本的垃圾收集器,它使用单线程进行垃圾收集。它采用”标记 - 复制”
算法,将堆内存分为年轻代和老年代,通过复制存活对象来进行垃圾回收。Serial 收集器适用于单线程环境和小型应用程序。Parallel 收集器 :Parallel 收集器是 Serial 收集器的多线程版本,它使用多个线程并行进行垃圾收集。它也采用”标记 - 复制”
算法,但相比于 Serial 收集器,Parallel 收集器能够更快地完成垃圾回收。Parallel 收集器适用于多核处理器和需要高吞吐量的应用程序。CMS 收集器 :CMS(Concurrent Mark Sweep)收集器是一种并发的垃圾收集器,它使用”标记 - 清除”
算法来进行垃圾回收。CMS 收集器通过并发标记和并发清除的方式,减少了垃圾收集导致的停顿时间。它适用于需要低延迟的应用程序。G1 收集器
:G1(Garbage-First)收集器是一种面向大堆内存的垃圾收集器,它使用了分代收集和区域化内存布局的方式。G1 收集器通过并发标记和并发清除的方式,以及优先回收垃圾最多的区域,来实现低延迟和高吞吐量的垃圾回收。它适用于大型应用程序和需要可预测停顿时间的应用程序。ZGC 收集器
:ZGC 收集器是一种低延迟的垃圾收集器,它的目标是在不超过 10 毫秒的停顿时间内,尽可能地回收大堆内存。ZGC 收集器使用了一种称为”
Region”的内存布局,将堆内存划分为多个大小相等的区域。它通过并发标记和并发清除的方式,以及读屏障和写屏障来跟踪对象的引用关系。ZGC 收集器适用于需要快速响应和高吞吐量的应用程序。Shenandoah 收集器
:Shenandoah 收集器是一种并发的垃圾收集器,它的目标是在不超过 10 毫秒的停顿时间内,尽可能地回收大堆内存。Shenandoah 收集器使用了一种称为”
Remembered Set”的数据结构来跟踪对象的引用关系。它通过并发标记和并发清除的方式,以及读屏障和写屏障来保证垃圾收集器和应用程序的并发执行。Shenandoah 收集器适用于需要快速响应和高并发的应用程序。