其他分享
首页 > 其他分享> > JVM九种垃圾收集器简单整理比较

JVM九种垃圾收集器简单整理比较

作者:互联网

  1. Serial:最早的垃圾收集器,新生代,单线程,使用标记-复制算法
  2. SerialOld :最早的垃圾收集器,老年代,单线程,使用标记-整理算法
  3. parNew : Serial的升级版,新生代,多线程,使用标记-复制算法,目前依然是不少Hot Spot虚拟机服务端的首选收集器,因为只有它能与CMS配合工作
  4. Parallel Scavenge :新生代,标记-复制算法,多线程,被称为“吞吐量优先收集器”(吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 运行垃圾手机时间)),可以根据系统运行情况自适应调节Eden区和Survivor区的大小比例。
  5. Parallel Old :老年代,标记-整理算法,多线程,与Parallel Scavenge配合使用,适用于注重吞吐量或处理器资源较为稀缺的场合。
  6. CMS:以获取最短停顿时间为目标,老年代,基于标记-清除算法,有四个阶段:初始标记(STW,耗时最短),并发标记(并发,耗时较长),重新标记(STW,耗时略短),并发清除(并发耗时较长)。缺点:对处理器资源敏感,产生浮动垃圾,空间碎片。
  7. G1:全堆。将堆划分为多个大小固定的独立区域(region),并跟踪这些区域的垃圾堆积程度,在后台维护一个优先级列表,每次根据允许的收集时间,优先回收垃圾最多的区域(Garbage First)。有一类“大对象堆”,保存大小超过rigion一半的大对象。整体上基于“标记-整理”,局部又是基于“标记-复制”,不产生内存碎片,停顿时间可控,但内存消耗较大。
  8. Shenandoah:仅在OpenJDK中支持,使用连接矩阵代替了G1的记忆集。
  9. ZGC:以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局,(暂时)不设年龄分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的收集器。在JDK 11新加入,还在实验阶段,主要特点是:回收TB级内存(最大4T),停顿时间不超过10ms。

标签:标记,收集器,并发,算法,垃圾,JVM,九种,内存
来源: https://blog.csdn.net/mschessy/article/details/109681097