本文主要是介绍G1垃圾收集器原理过程学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
G1全称Garbage First。是当前收集器技术发展最前沿成果之一。
GC算法:标记整理
概念:分区region
G1收集器将整个java堆分成很多大小相同的region,新生代和老年代不再是物理隔阂,而是部分region的集合。
处理过程:
初始标记-并发标记-最终标记-筛选回收
1、初始标记
仅仅是标记GC Roots能直接关联的对象,速度很快。stop the word。
2、并发标记
从GC Roots出发,对堆中对象进行可达性分析,找出存活对象,该阶段耗时较长,但是可与用户线程并发执行。
3、最终标记
主要修正在并发标记阶段因为用户线程继续运行而导致标记记录产生变动的那一部分对象的标记记录。stop the word。
4、筛选阶段
将各个region分区的回收价值和成本进行排序,根据用户所期望的停顿时间制定回收计划。这阶段停顿用户线程。stop the word。
优缺点:
优点:
1、并行并发
2、分代收集,可以采用不同的算法处理不同的对象。
3、空间整合。标记整理算法意味着不会产生内存碎片。
4、可预测的停顿时间。
为什么可预测?因为G1避免了整个java堆的全区域收集。G1会统计每个region的回收价值和成本,维护一个优先列表,优先回收价值最大的region。这样可以保证在有限的时间内,获得最大的回收效率。
缺点:还不够成熟,还没有经过真正的实际考验。
这篇关于G1垃圾收集器原理过程学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!