[Yarv-devel] GC Tech. on Script Lang.

MAEDA Atusi maeda-yarv @ atusi.org
2004年 2月 7日 (土) 04:49:05 EST


"K.Sasada" <ko1 at namikilab.tuat.ac.jp> writes:

>  登録されたオブジェクト(?)の回収のタイミングって何時ごろ
> でしょうか。多分、全てのオブジェクトは最初は全部そいつに登録
> されるんですよね。その配列が埋まったとき、かな。

「ヒープに参照を書き込んだ」ときに、その参照を登録するんじゃないんです
か? で、ローカルGCのルートはその表とスタックになると。

いや、まだ全貌が良く分かっていませんが。

1ビット参照カウント(ポインタ内に1ビット持つ)というより、deferred
reference counting (Deutsch & Bobrow 1976) の方が似ているかも、とか推
測しています。

・ローカル変数からの参照は普段は数えない。ヒープへの変更だけ記録。
・ほとんどの参照カウントは1なので、参照が0のやつと2以上のやつだけ、
  それぞれ別の表(ZRTとMRT)に登録する。
・GC時に、スタックをスキャンして、VRT (Variable Reference Table)を作る。
  ZRTにあってVRTにないものはゴミ。
・サイクルはまた別のGCで回収。

				前田敦司


Yarv-devel メーリングリストの案内