课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
java虚拟机是我们在学习软件编程开发的时候需要重点掌握的一个编程知识,而今天我们就通过案例分析来了解一下,java编程cms回收流程。
1、初始标记(initialmark),这个阶段是STW的,扫描根集合,标记根直接可达的对象即可。
2、并发标记(Concurrentmarking),这个阶段和应用线程并发,从上一步标记的根直接可达对象开始进行tracing,递归扫描所有可达对象。
3、并发预清理(Concurrentprecleaning),这个阶段和应用线程并发,就是想帮重新标记阶段先做点工作,扫描一下卡表脏的区域和新晋升到老年代的对象等,因为重新标记是STW的,所以分担一点。
4、可中断的预清理阶段(AbortablePreclean),这个和上一个阶段基本上一致,就是为了分担重新标记标记的工作。
5、重新标记(remark),这个阶段是STW的,因为并发阶段引用关系会发生变化,所以要重新遍历一遍新生代对象、GcRoots、卡表等,来修正标记。
6、并发清理(Concurrentsweeping),这个阶段和应用线程并发,用于清理垃圾。
7、并发重置(Concurrentreset),这个阶段和应用线程并发,重置cms内部状态。
cms的瓶颈就在于重新标记阶段,需要较长花费时间来进行重新扫描。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。