[Yarv-devel] GC Tech. on Script Lang.
MAEDA Atusi
maeda-yarv @ atusi.org
2004年 2月 9日 (月) 13:36:11 EST
そういえば、スレッドローカルなGCの文献をもう一つみつけました。
Damien Doligez and Xavier Leroy
A concurrent, generational garbage collector for a multithreaded
implementation of ML
Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of
programming languages, pp.113-123, 1993
Concurrent Caml LightのGCの話です。
スレッドごとのヒープから共有ヒープへのminor GC と、並列・非同期に共有
ヒープのGCを行なっています。GCのためにスレッドを全部止めるようなことは
していません。
MLなので、mutableなオブジェクトかどうかがコンパイル時に分かるというこ
とを利用しています。(そういうのはコピーしないですむよう、最初から共有
ヒープに割り付ける。)
スレッドローカルなオブジェクトへの参照を共有ヒープに書き込んだら、オブ
ジェクトを再帰的に共有ヒープへコピーしています。immutableなオブジェク
トはobject identityが無い(Rubyのequal?でなく==でしか比べない)ので、コ
ピーして構わないのです。
前田敦司
Yarv-devel メーリングリストの案内