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
大对象份区:主要存储比较大的对象
3499

被折叠的 条评论
为什么被折叠?



