内容:
1.G1收集器的解析
2.G1收集器的使用
一、G1收集器的解析
G1和其他收集器截然不同,从分代上看,它仍然属于分代垃圾收集器,也会区分新生代、老年代,仍然有Eden区和Survivor区;从堆结构上看,它并不要求新生代、老年代都连续。作为CMS的长期替代方案,G1使用了分区算法,其特点如下:
a)并行性:在回收期间,可以由多个GC线程同时工作,有效利用多核计算的能力。
b)并发性:拥有与应用程序交替执行的能力,部分工作可以和应用程序同时执行。一般来说,不会在整个回收期间完全阻塞应用。
c)分代收集:对比其他的收集器,它可以同时兼顾新生代和老年代。
d)空间整理:G1每次回收都会有效的复制对象,减少空间碎片。
e)可预见性:因为分区的原因,G1可以选择部分区域进行内存回收,减小了回收范围,对全局停顿也能得到较好的控制。
二、G1收集器的使用
1.可以向CMS收集器一样,GC操作与运用的线程一起并发执行;
2.紧凑的空间内存区间且没有很长的GC停顿时间
3.需要可预测的过程暂停耗时
4.不想牺牲太多吞吐量性能
5.启动后不需要请求更大的Java堆;
使用场景:
1.Full GC次数太频繁或者消耗时间太长
2.对象分配的频率或代数提升显著变化
3.受够了太长的垃圾回收或内存整理时间(超过0.5-1秒)
详细文章: