- Serial GC,新生代,最古老的垃圾收集器。Serial体现在收集工作是单线程的,并且在进行垃圾收集过程中,会进入臭名昭著的"Stop the world"。当然其单线程设计也意味着精简的GC实现,无需维护复杂的数据结构,初始化也简单。
- ParNew GC 新生代GC实现。它实际上是Serial GC的多线程版本。最常见的应用场景是配合老年代的CMS GC工作
- Parrallel GC。新生代收集器、也是使用复制算法、也是并行的多线程收集器。与ParNew GC的区别在于Parrallel GC目标在于得到一个可控制的吞吐量,也称为吞吐量优先
- CMS(Concurrent Mark Sweep) GC,基于标记-清除(Mark Sweep)算法。设计目标是尽量减少停顿时间。这对于Web等反应时间敏感的应用非常重要。但是CMS算法采用的标记-清除(Mark Sweep)算法,存在着内存碎片化问题,难以避免长时间使用的情况下出现full GC,导致恶劣的停顿。另外既然强调了并发(Concurrent),CMS会占用更多CPU资源,并和用户线程争抢
-
G1 GC。这是一种兼顾吞吐量和停顿时间的GC实现,G1可以直观的设定停顿时间的目标。相比于CMS GC,G1未必能做到CMS在最好情况下的延时停顿,但是最差情况要好很多。G1 GC中仍然存在年代的概念,但是内存结构类似于棋盘的region。region之间是复制算法。但整体上可以看做为标记-整理(Mark-Compact)算法,有效避免内存碎片
[Java基础]-- Java GC 垃圾回收器的分类和优缺点
详解 JVM Garbage First(G1) 垃圾收集器
上一题:常见的垃圾收集算法
下一题:CMS和G1有什么区别
标签: gc、cms、g1、停顿、垃圾
笔试题
刷题
简历模板
AI算法
大数据
内推
内推: