G1是一款面向服务端的垃圾收集器,他的特点
1)并行并发,并行是指G1利用服务端多核优势缩短stop the world的时间,并发是指G1可以使GC线程和用户线程并发执行
2)分代收集,G1虽然还保存分代收集概念,但是G1 可以管理整个java堆不需要其他收集器配合
3)空间整合:从总体看G1是采用标记清除算法,局部看是采用复制算法,这样就不会产生内存碎片
4)可预测停顿:G1和CMS相比除了降低可停顿时间还可以建立可预测的停顿时间模型,就是你可以指定在长度为M的时间段内,消耗在垃圾收集上的时间不超过N毫秒
G1可以实现可预测停顿,依赖于,首先把java堆把java堆划分为大小相等的独立区域region,G1跟踪各个region里面垃圾堆积的价值大小,在后台维护一个优先队列,每次根据允许的时间优先回收价值最大的region
G1收集器的运作流程:
1)初始标记:stop the world,初始标记是标记一下GCRoot能直接关联的对象速度很快
2)并发标记:从GCRoot开始对堆中对象进行可达性分析
3)最终标记:修正并发标记的变动部分,把remembersetlog数据合并到rememberset中,这段时间stop the world但是可以并行执行
4)筛选回收:对region中回收价值和成本进行排序,然后在用户期待的时间内选择回收计划
1、CMS垃圾收集器的目标是,获取最短的回收停顿时间,所以他很适合用于要求响应速度的服务,希望系统停顿时间短,给用户带来较好的体验
2、C