ガベージコレクションのアルゴリズムと実装 3,4章
ustの進みに合わせて毎週読みます。
http://www.ustream.tv/recorded/5849980
Shinichi Tokunaga
@deepneko
あ、この章だと、オブジェクトは「カウンタ : フィールド」という形で話を進めます。(カウンタ=ref_cnt)
2010-04-03 08:55:53
Shinichi Tokunaga
@deepneko
update_ptrってのが出てきたんだが…ミューテータがオブジェクトのポインタを更新するタイミングはいつだ?
2010-04-03 09:00:18
Shinichi Tokunaga
@deepneko
ポインタ(オブジェクトの)を渡して、カウンタをデクリメントする→カウンタが0だったら、子オブジェクトも踏査して同様にデクリメント処理。
2010-04-03 09:29:36
Shinichi Tokunaga
@deepneko
ふーむ。ということは、色んな処理のあとにupdate_ptrが挿入されてるってことか。参照カウントの実装ってあんまり綺麗なものにならなそうだね。
2010-04-03 09:36:10
Shinichi Tokunaga
@deepneko
参照カウントはメモリ管理をミューテータと並行して行うので、アロケーション時にチャンクがなかったら、新たにオブジェクトを割り当てることができません。
2010-04-03 09:37:31
Shinichi Tokunaga
@deepneko
マークスイープとの大きな違い。(マークスイープはゴミはいったん放置しておいてチャンクが無くなったら回収)
2010-04-03 09:38:46
Shinichi Tokunaga
@deepneko
他のGCだとチャンクがなくなってGCが走って初めて、ゴミかゴミじゃないかがわかる。つまりGCが走るまではゴミがメモリに残る。
2010-04-03 09:40:31
Shinichi Tokunaga
@deepneko
参照カウントのメリット②: ゴミが生成されるたびにゴミだけ回収するので、ミューテータの最大停止時間が短い。
2010-04-03 09:41:36