G1 收集器【JVM调优】

1. 分区收集器

① G1:分区算法,物理上不分代,逻辑分代。每次只回收快满了的几个小区域,对于较大的 Eden 区,回收效率还不算很高;
② ZGC:分页算法,它是完全没有 Eden 区概念的,一视同仁,非常灵活,效率很高;
③ Shenandoah:也是分页,与 ZGC 的算法很类似,只不过 ZGC 只有一个屏障,而 Shenandoah 是三个屏障,虽然说 Shenandoah 的承受度要更高一些,但是毕竟 ZGC 是官方支持的,而 Shenandoah 只是开源的;
④ Epsilon:它其实是给 JVM 的开发者 debug 用的,起到一个跟踪的作用。

2. G1 收集器

依然没有官方的概述,我们还是直接上大白话。
首先要知道,G1 跟其他垃圾收集器最大的区别:G1 摒弃了分代模型

通过上一篇文章我们知道,前面提到的那几个垃圾回收器,它们其实都是两两配合使用的,就比如 CMS 和 Parnew,每个收集器负责一个代,即新生代和老年代。

G1 准确地说应该是,在物理上不分代,逻辑上是分代的,所以会有 Eden 区和 Old 区的概念,同时,G1 的 E、O 区并不是固定的,在下次分配的时候或许 E、O 区就互换了!

以往进行垃圾回收的时候,都需要把整体年轻代都扫完,然而随着年轻代越来越大,GC 扫描的效率是可想而知的,很慢。另外,由于 CMS 固有的 bug,必须得改进才能避免漏标。因此,出现了 G1,它是目前主流的垃圾回收器。

在这里插入图片描述

G1 垃圾回收器采用分区算法。部分回收,只回收快满了的几个小区域,而空着的区域可以被其他对象占用。如果对象需要连续内存就把它放到 Humongous 里面,连续区域不够用时就进行一次 Full GC。

但是它也有自己的缺点,它一次回收会把 Eden 区全部回收完,当 Eden 区很大时,一次 YGC 产生的 SWT 时间也非常长,因此,诞生了 ZGC。

ZGC 是分页算法,非常灵活,它也不分代,内存增大,停顿时间较短,是 golong 的核心算法。每 100ms 触发一次 GC,清理掉那些特别满的区域。ZGC 的核心算法为颜色指针(Colored Pointer)和读屏障(Load Barrier)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栈老师不回家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值