2007年11月13日星期二

重构GC和Ref table代码

代码有很多的坏味道,今天抽空重构。主要GC和Ref management之间的关系。我无法确定现在能否在一个Ref management上面去做可选各种GC实现。
为了所谓效率,干脆把接口定义为宏,主要是遍历Ref table和访问的接口。另外Ref table数据对GC都是透明的。
还得思考如果加入世代收集的机制,是不是能管用。简单的说,如果分两代,可能需要另外的数据结构来管理,Ref table肯定只有一个,因为这个是向量,是Ref寻址的基本。但是一个oBject 可以是动态的某代。处于效率的考虑,每次GC Mask的时候不需要遍历真个Ref table. 而只需要访问某代的序列,因此可能要将他们串起。现在原型里面的实现是Mask所有的,这个肯定太弱了,必须支持部分Mask。这个部分可能要用代来区分。要保证未访问的节点,虽然没有mask ,却不能被收集。
妈的,感觉做的越来越复杂了,怕身陷不能自拔。

0 COMMENTS: