认识G1垃圾回收器

1、什么是G1?

        G1(Garbage-First)垃圾优先回收器 

2、特点

        并行性:G1拥有与应用程序交替执行的能力,G1回收线程和应用程序工作线程并行执行,不会在整个回收阶段发生完全阻塞应用程序的情况,避免“STW”。

         并发性:可以有多个GC线程在不同区域同时回收,并发性更高,更适合多核服务器,有效利用多核计算能力。   并发性:可以有多个GC线程在不同区域同时回收,并发性更高,更适合多核服务器,有效利用多核计算能力。

        可以先回收一部分区域,回收更快。

        可以建立听端预测模型,可以设定垃圾回收最长时间。

从分代上看,G1依然属于分代型垃圾回收器,它会区分年轻代和老年代,年轻代依然有Eden区和Survivor区。但从堆的结构上看,它不要求整个Eden区、年轻代或者老年代都是连续的,也不再坚持固定大小和固定数量。
将堆空间分为若干个区域(Region),这些区域中包含了逻辑上的年轻代和老年代。

        和之前的各类回收器不同,它同时兼顾年轻代和老年代。对比其他回收器,或者工作在年轻代,或者工作在老年代,也不会像传统垃圾回收器一样,等空间满了才回收,而是在空间还没有满时就进行了回收

将大空间分成若干小区域,实现更复杂,更精细的功能

3、优势

 ①、每次垃圾回收时间短,吞吐量高

 ②、可以在用户指定的时间内完成垃圾回收

4、运用场景

 主要面向多CPU和大内存服务器场景

  ①、电商秒杀服务器

  ②、多路直播服务器 

5、G1对象管理过程

启动年轻代垃圾回收:没有被回收的对象,才会被存到下一个区域或者新的区域

 新对象分配在新生Eden区

启动年轻代垃圾回收:活的对象会被集中分配到一个区域里面

继续分配,Eden区再次填满,E区和S区活的对象(没有被回收的对象)分配规则:

        1、如果某对象移动次数大于规定值,将其放到老年代(old区)。

        2、其他会被分配到一个新的S区

G1在执行时,上面过程是并发的,可能会用到多个O区。

如果某些对象特别大,就会直接存到H区域中

不同区域模型

6、G1分区类型

        新生代分区:存储新创建的对象份区默认大小1MB,又可以分为Eden区和Survivor区(占堆5%~60%)

       老年代份区:存储周期比较长的对象,默认大小是1MB

       大对象份区:主要存储比较大的对象

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值