(一)通俗易懂讲解G1垃圾回收器之整体设计思想

前言

网上很多资料讲解的很不清不楚,让人不知所以然。更过分的是,完全不负责任地告诉读者这是正确的,其实他自己都不知道他自己的理解是错误的,真是颠倒黑白,误人子弟。

本人想通过用通俗易懂的语言告诉大家G1垃圾回收器的原理,把本人所知道的100%分享出来,并尽可能保证内容的严谨,避免误人子弟。

Stop The World(STW)

默认情况下,用ParNew+CMS组合垃圾回收期,不论是进行新生代和老年代的垃圾回收,都会导致STW现象,导致系统停止运行,这是垃圾回收时最大的痛点,大大影响了系统运行的性能。为了减少STW对系统的影响,G1垃圾回收器应运而生,提供了更好的垃圾回收性能。

G1垃圾回收器简介

它可以回收新生代和老年代,不需要像“ParNew+CMS”组合垃圾回收器那样配合起来进行垃圾回收。

他有几个很显著的特点:

(1)把Java堆内存拆分为了多个大小相等的Region区域。

(2)可以设置一个垃圾回收的预期停顿时间。比如说,我们可以设定它在10分钟内垃圾回收导致的STW时间,也就是系统停顿时间,不超过1s,这些都由G1来给你保证达到目标。这是否意味着我们可以直接控制垃圾回收对我们系统性能的影响了呢?

回收价值

为了达到STW时间可控的目的,引入了一个“回收价值”的概念。意思是,它可以知道如果对每个Region进行GC,需要耗费多长是, 可以回收掉多少垃圾。

新生代和老年代

在G1的内存模型中,Region随时会属于新生代和老年代,他们各自的内存大小是不停变动的,由G1自动控制。

总结

触发GC时,可以根据设定的预期系统停顿时间,来选择最少回收垃圾时间和最多垃圾对象的Region进行垃圾回收,保证GC对系统停顿的影响在可控范围内,同时还尽可能回收更多的对象。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值