详细说说你对G1垃圾回收器的理解

3 阅读1分钟

G1垃圾回收器:G1垃圾回收器是作用于新生代和老年代的垃圾回收器,垃圾回收算法采用复制算法。 G1垃圾回收器将堆内存分为若干个区域,每个区域都可以充当Eden区,survivor区,old区,humongous区,humongous区存储大对象。

垃圾回收分为三个阶段:新生代垃圾回收,新生代垃圾回收+并发标记,混合垃圾回收

一开始所有区域都是空闲区域,创建新对象时,挑选一些区域作为Eden区,然后将新建的对象存入Eden区中。当Eden区空间不足,就会挑选一个空闲的区域作为survivor区,并用复制算法将存活对象复制到幸存区,这一阶段是STW的。当Eden区空间再次不足,就会把Eden区的存活对象和旧的survivor区的存活对象移动到新的survivor区,其中较老的对象晋升到老年代。 当老年代占用内存超过阈值时,就会触发并发标记,并发标记后,进行重新标记,把并发标记时漏标的对象标记,这一阶段是STW的,这些都完成后,就知道老年代有哪些存活对象, 混合垃圾回收阶段不会堆所有老年代区域进行垃圾回收,而是根据暂停时间目标,优先对回收价值高的区域进行垃圾回收,混合垃圾回收阶段参与的区域有Eden区,survivor区,old区。复制完成后,内存得到释放,进入下一阶段的新生代垃圾回收,并发标记,混合垃圾回收。