JVM之垃圾收集器:G1收集器

G1(Garbage-First)是一款面向服务端应用的垃圾收集器,设计目标是在延迟可控的情况下提高吞吐量。G1将堆内存划分为Region,采用并发和并行回收,兼顾年轻代和老年代,使用优先级区域回收策略减少停顿时间。其优点包括空间整合和可预测的停顿时间模型,缺点是内存占用和执行负载较高。适用于大内存、需要低延迟的应用场景,通常在6-8GB以上的堆大小时表现更优。
摘要由CSDN通过智能技术生成


简介

  • 官方给G1设定的目标是:在延迟可控的情况下获得尽可能高的吞吐量,开创了收集器面向局部收集的设计思路和基于Region的内存布局形式
    • G1 (Garbage- First)是一款面向服务端应用的垃圾收集器,主要针对配备多核CPU及大容量内存的机器,以极高概率满足GC停顿时间的同时,还兼具高吞吐量的性能特征
  • 在JDK1.7版本正式启用,移除了Experimental的标识,是JDK 9以后的默认垃圾回收器,取代了CMS回收器以及Parallel + Parallel Old组合。被Oracle官方称为“全功能的垃圾收集器”
    • CMS已经在JDK 9中被标记为废弃(deprecated)。在jdk8中还不是默认的垃圾回收器,需要使用-XX: +UseG1GC来启用
  • 复制算法+标记-压缩算法、并发+并行回收和"Stop-the-world"机制

为什么叫做Garbage First(G1)?

  • G1是一个并行回收器,它把堆内存分割为很多不相关的区域(Region) (物理上不连续的)。使用不同的Region来表示Eden、幸存者0区,幸存者1区,老年代等

  • G1 GC有计划地避免在整个Java堆中进行全区域的垃圾收集。G1跟踪各个Region里面的垃圾收集的价值大小(回收所获得的空间大小以及回收所需时间的经验值),在后台维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的Region

  • 由于这种方式的侧重点在于回收垃圾最大量的区间(Region) ,所以给G1一个名字:垃圾优先(Garbage First)

G1回收器的特点

优势

    1. 并行与并发
    • 并行性:G1在回收期间,可以有多个GC线程同时工作,有效利用多核计算能力。此时用户线程STW(只要是并行回收就一定会STW)
    • 并发性:G1拥有与应用程序交替执行的能力,部分工作可以和应用程序同时执行,因此,一般来说,不会在整个回收阶段发生完全阻塞应用程序的情况
    1. 分代收集
    • 从分代上看,G1依然属于分代型垃圾回收器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xylitolz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值