G1垃圾回收器运行机制与优缺点

1 简介

G1开创了收集器面向局部收集的设计思路和基于Region的内存布局形式,它被作为JDK9的默认收集器,以接替JDK5提供的CMS收集器,所以同样是一款主要面向服务器应用的垃圾收集器。

它的设计目标不再是一次性把整个堆空间清理干净,而是追求内存分配速率与内存回收速率的平衡,以到达在GC产生的延迟可控的情况下,获得尽可能高的吞吐量。

2 停顿时间模型

“停顿时间模型”是G1最主要的特性,它允许程序员可以按照应用程序对延迟时间的可忍受程度,自由的将GC的执行时间限制在一个固定的范围内,使得应用程序的响应时间与吞吐量达到一个合理的平衡。

为了实现这一目标,G1从内存布局空间、对象分配策略、回收策略等多个方面进行了重新设计。

3 Region

基于Region的堆内存布局设计是G1能够建立其可预测的停顿时间模型的关键。

G1采用“化整为零”的解题思路,它将连续的Java堆内存空间划分为多个大小相等的独立区域,每一块称为一个Region(通过-XX: G1HepRegionSize可自定义每个Region的大小,取值范围为1M~32M)。

每个Region都可以根据需要,充当新生代的Eden、Survivor或老年代空间。所以新生代和老年代的大小不再固定,而是动态变化的。

对于大对象的堆内存分配,G1通过一类称为Humongous的特殊区域,专门用于存储大对象的Region。当对象的大小超过一个Region容量大小的一半,即判定为大对象。而对于超过整个Region容量大小的超级大对象,将被存放在N个连续的Humongous Region中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值