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。运作流程主要包括以下:初始标记,并发标记,最终标记,筛选标记。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值