JVM 的GC回收算法----G1

本文详细介绍了G1(Garbage-First)垃圾回收算法,它是JVM的一种面向服务端应用的垃圾回收器,旨在替代CMS。G1将堆划分为多个不等大小的Region,并允许并行或非STW方式进行垃圾回收。文章涵盖了G1的年轻代和老年代GC过程,包括初始标记、根区扫描、并发标记、重新标记、清除回收和对象复制等步骤,强调了其并发性和STW停顿的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        JVM内存垃圾回收目前有多种算法,每种算法都有自己的特点和使用场景,本文主要介绍一下G1(Garbage-First)算法.G1是一款面向服务端应用的垃圾回收器,是SUN公司在JDK1.7中提出来的,初衷是替换JDK1.5中的CMS垃圾回收算法。G1之前的所有收集器都是对整个新生代或老年代进行垃圾回收,而G1不是这样:G1是将整个堆空间分成许多个大小不等的独立区域(Region),大约有2000块,每个Region从1M到32M大小不等,在JVM启动的时候就已经分割好了,Region可采用并行的垃圾回收或 NOT STW 方式。如下图所示:

Region被分成了Eden、survivor和旧生代Region。除此之外,其实还有第四类——大Region。此部分区域用来存放超过标准Region大小的50%或者更大的对象,此部分在内存中是连续的。不过oracle没有对这一部分的gc操作进行优化,不建议大家使用大Region。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值