G1收集器优势

G1 可以充分利用服务器多核的优势

  • 并行与并发
  • 分代收集
  • 空间整合
  • 可预测的停顿 【精确指定 垃圾回收时间不超过 m】

G1 后台有一张表 remember set, 对 region 进行排序,回收哪个region 效率高,就回收哪个

G1 相比 CMS 的一个优势就是:减少停顿的时间, 其他的不比CMS优秀

RSet有什么好处?

进行垃圾回收时,如果Region1有根对象A引用了Region2的对象B,显然对象B是活的,如果没有Rset,就需要扫描整个Region1或者其它Region,才能确定对象B是活跃的,有了Rset可以避免对整个堆进行扫描。

RSet有什么风险?

通过对RSet实现过程的研究,我们得知应用线程只负责把更新字段所在的Card插入到dirty card queue中,然后由后台线程refinement threads负责RSet的更新操作,如果应用线程插入速度过快,refinement threads来不及处理,那么应用线程将接管RSet更新的任务,这是必须要避免的。

refinement threads线程数量可以通过-XX:G1ConcRefinementThreads-XX:ParallelGCThreads参数设置

作者:占小狼 链接:https://www.jianshu.com/p/870abddaba41 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。