搜索
您的当前位置:首页正文

展望未来的收集器Shenandoah收集器

来源:吉趣旅游网

Shenandoah收集器

        1.目标实现任何堆内存大小下把垃圾收集的停顿时间限制在十毫秒以内。

        2.默认不使用分代收集。

        3.名为“连接矩阵”的全局数据结构来记录跨Region的引用关系。

        4.步骤:

                初始标记,并发标记·最终标记·并发清理·并发回收·初始引用更新·并发引用更新·最终引用更新.并发清理

               并发回收:对于并发回收阶段遇到的困难,Shenandoah将会通过读屏障和被称为“Brooks Pointers”的转发指针来解决

               初始引用更新:引用更新的初始化阶段实际上并未做什么具体的处理,设立这个阶段只是为了建立一个线程集合点,

        5.Brooks提出的新方案不需要用到内存保护陷阱,而是在原有对象布局结构的最前面统一增加一个新的引用字段,在正常不处于并发移动的情况下,该引用指向对象自己

        6.转发指针是分散存放在每一个对象头前面。

        8.Shenandoah收集器是通过比较并交换(Compare And Swap,CAS)操作

        9.为了实现Brooks Pointer,Shenandoah在读、写屏障中都加入了额外的转发处理,尤其是使用读屏障的代价,这是比写屏障更大的。

        10.读屏障带来的性能开销会是Shenandoah被诟病的关键点之一,所以计划在JDK 13中将Shenandoah的内存屏障模型改进为基于引用访问屏障,造成吞吐量降低

        11.停顿时间比其他几款收集器确实有了质的飞跃,但也并未实现最大停顿时间控制在十毫秒以内的目标,而吞吐量方面则出现了很明显的下降,其总运行时间是所有测试收集器中最长的。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top