Tomcat与Nginx性能调优及GC机制.pdfVIP

  • 0
  • 0
  • 约小于1千字
  • 约 3页
  • 2026-08-19 发布于北京
  • 举报

读屏障和写屏障的区别

起始时候的对象模型

当进行一次GC时,首先会将A和C标记为灰色,表示即将对A和C进行标记

完成对A和C进行标记,A和C都会变成黑色。然后B会变为灰色,表示接下来即将标

记B。

被标记为黑色,表示其所有的子阶段已经全部完成标记,回收期不会再关注此对象

但是假如现在开始运行应用线程.应用线程发生了对象之间的操作,为

ObjectobjD=B对象.getObject();

B对象.D字段=null;

C对象.D字段=objD.

也就是B不在D对象,而变成了CD对象.内存图就变成了.

假如此时又启动了回收线程。就会出现问题

回收线程首先会将B标记为黑色,因为B也没有子阶段。但是C已经是黑色,GC不在

关注C,因此D对象就会被认为是,但是D对象并不是,因为C在使用D对象。

为了解决这个问题,于是就有了读屏障和写屏障。

再看刚刚执行用户线程的三个步骤。

ObjectobjD=B对象.getObject();

B对象.D字段=

文档评论(0)

1亿VIP精品文档

相关文档