11.深入G1垃圾回收器

       Gl垃圾回收器的全称是Garbage First GC,之所以叫这个名字是因为G1 GC是一个压缩收集器,它基于回收最大量的垃圾原理进行设计;

       G1垃圾回收器采用递增、并行运算、独占式运算的特征方式,并采用拷贝技术实现自身的压缩目标。同时,通过并行的多阶段标记方式缩短各层级(标记、重标记、清除等阶段)的停顿时间。即G1垃圾回收器具有多层级、无间隔排查的特点;

       G1垃圾回收器是在JDKl.7 中正式投入使用的全新的垃圾回收器;

       G1依然属于分代垃圾回收器,它会区分年轻代和老年代,年轻代依然有Eden 区和Survivor 区,但从堆的结构上看,它并不要求整个Eden 区、年轻代或者老年代包含的Region区在物理上都是连续的。综合来说, Gl 使用了全新的分区算法,其特点如下所示:

       并行性: G1在回收期间,可以有多个GC 线程同时工作,可以有效利用多核的计算能力;

       并发性: G1拥有与应用程序交替执行的能力,部分工作可以和应用程序同时执行,因此, 一般来说,不会在整个回收阶段发生完全阻塞应用程序的情况;

       分代GC: G1依然是一个分代收集器,但是和之前的各类回收器不同,它同时兼顾了年轻代和老年代。对比其他回收器,它们或者工作在年轻代,或者工作在老年代;

       空间整理: G1 在回收过程中,会进行适当的对象移动,不像CMS 那样只是简单地标记清理对象。在若干次GC 后, CMS 必须进行一次碎片整理。而G1不同,它每次回收都会有效地复制对象,减少空间碎片,进而提升内部循环速度;

       可预见性:由于分区的原因, G1可以只选取部分区域进行内存回收,这样缩小了回收的范围,因此对于全局停顿情况的发生也能得到较好的控制;

G1的垃圾回收机制

G1 GC 在回收暂停阶段会回收最大量的堆内区间(Region),

猜你喜欢

转载自blog.csdn.net/Regemc/article/details/80633146
今日推荐