240 发简信
IP属地:加州
  • 二 链表

    基本功1,翻转链表 206. Reverse Linked List 循环外2根指针,循环内NEXT指针。 92. Reverse Linked List II https:...

  • @阿菜的博客 对于第一个条件,在并发标记阶段,如果该白对象是new出来的,并没有被灰对象持有,那么它会不会被漏标呢?Region中有两个top-at-mark-start(TAMS)指针,分别为prevTAMS和nextTAMS。在TAMS以上的对象是新分配的,这是一种隐式的标记。对于在GC时已经存在的白对象,如果它是活着的,它必然会被另一个对象引用,即条件二中的灰对象。如果灰对象到白对象的直接引用或者间接引用被替换了,或者删除了,白对象就会被漏标,从而导致被回收掉,这是非常严重的错误,所以SATB破坏了第二个条件。也就是说,一个对象的引用被替换时,可以通过write barrier 将旧引用记录下来。

    摘自知乎

    G1 详解

    目录: 1.G1 介绍 2.G1 young GC 3.G1 mixed GC 4.三色标记算法 5.STAB 6.Rset 1.G1 介绍 G1收集器(或者垃圾优先收集器)...

  • 首先RSet是Point-into,CardTable是Point-Out。

    Young GC时,在某个Region,目标是知道这个区域的对象有哪些在被引用。如果没有RSet,就需要遍历所有的Old Regions,才能确定谁引用了我这个区域的对象。这样就跟CMS一样了,扫描效率比较低。

    Full GC时,同样的,一个Old区域,如何判断这个区域的对象还有没有人引用,使用RSet也快一点。

    所以Rset可以减少GC的扫描范围,效率提高。

    G1 详解

    目录: 1.G1 介绍 2.G1 young GC 3.G1 mixed GC 4.三色标记算法 5.STAB 6.Rset 1.G1 介绍 G1收集器(或者垃圾优先收集器)...

  • 你说的情况,只有条件1的话,那么就是
    一个对象是白色的,而且它被灰色引用。并发标记阶段,白色对象赋给了黑色。
    那么下一步遍历灰色的对象时候,这个白色对象就被标记了。

    所以说这两个条件要同时满足。

    G1 详解

    目录: 1.G1 介绍 2.G1 young GC 3.G1 mixed GC 4.三色标记算法 5.STAB 6.Rset 1.G1 介绍 G1收集器(或者垃圾优先收集器)...