导语
G1回收器是在JDK1.7中正式使用的一种全新的垃圾回收器,它的目标是为了取代CMS回收器。G1回收器拥有独特的垃圾回收策略,和之前的任意的一种垃圾回收器都有所不同,但是从分代策略上来说依然是属于分代垃圾回收器,也分为年轻代和老年代,任然是有eden区和survivor区。但从堆结构上看,它并不要求整个的eden区、年轻代或者老年代是连续的空间。它所使用的是一个分区算法,这个后面的分享中会介绍到。
G1特点
作为CMS的替代算法,G1使用了全新的分区算法特点如下
并行性 :G1在回收期间,可以由多个GC线程同时工作,有效的利用多核的计算能力
并发性 :G1拥有与应用程序交替执行的能力,部分工作可以与应用程序同时执行,所以,不会在一整个回收期间完全阻塞应用程序。
分代GC:G1 是一个分代收集器,与之前的收集器不同的是它兼顾了年轻代和老年代,相比较于其他的垃圾回收器,其他的收集器只能工作于年轻代或者老年代其中的一个,所以在这个方面和之前的收集器有所不同。
空间整理:G1 在回收过程中会进行适当的对象移动,与CMS不同,只是简单的标记清理对象,在若干次GC之后,CMS必须执行一次碎片整理,G1则是每次回收都会有效的复制对象,尽量减少空间碎片。
可预见性:由于分区的原因,G1可以只选取部分区域进行内存回收