最近对iOS逆向工程进行了些研究,由于iOS系统的封闭性,iOS的逆向研究需要使用到一些工具,包括Mac端与iOS客户端。本文对逆向App Store的应用的整个过程进行了一...
最近对iOS逆向工程进行了些研究,由于iOS系统的封闭性,iOS的逆向研究需要使用到一些工具,包括Mac端与iOS客户端。本文对逆向App Store的应用的整个过程进行了一...
基本功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收集器(或者垃圾优先收集器)...