Cheney的复制算法
cheney复制算法由cheney1970年研究提出,与典型的复制算法递归进行不同cheney是迭代的复制进行。典型的复制算法以类似深度优先遍历进行而cheney由广度优先遍历进行。(有木有再次感受到计算机基础的重要性,深度改广度换上自己的名字就可以名垂千古)。
Cheney的复制算法需要Scan和Free两个指针指向TO空间。SCAN用于搜索已复制完成的对象从而实现广度优先遍历,Free指针用于指向下一个空闲区域。开始由复制被根指向的对象复制到TO区域,然后在TO区域中由SCAN指针逐个搜索复制到TO空间,搜索完成后清除Free空间,最后交换Free和To空间,算法也就完成了。
我们直接以下图为例子解释这个过程:
注意:一开始这里SCAN和Free指向的是同一个空闲空间。
首先由根指向的对象复制到TO空间中,再有Scan指针从头到尾开始搜索:
Scan从A开始遍历搜索,将被引用的对象依次排在Free指向的空间,然后SCAN指向下一个对