「ガベージコレクションのアルゴリズムと実装」を読んだ

著者のから id:authorNariさんから「ガベージコレクションのアルゴリズムと実装
献本いただきました。ありがとうございます。


竹内先生の前書きでも触れられていたが、日本語の GC の資料は今まで本当に少なかった。
2006 年に未踏で Scheme シェルを書いたときに、Mark & Sweep GC を実装したのだが資料集めに苦労したのをよく覚えている。Wikipedia にまとまっている程度のものなら見つかるのだが一歩踏み込むと英語でしか資料が見つからないという状況だった。(そのときにまとめた資料。)
しかしついに本書の登場でその状況も打破された。
これだけ踏み込んだ内容であれば自前で GC を実装しようとする人にも十分だ。適切な GC 手法を選び、アルゴリズムを理解し実装するところまでいけるだろう。不足があれば補足資料として論文などをあたれば良い。


本書にはアルゴリズム編と実装編の2つに大きく分かれている。どちらも面白いのだが GC を実装した事がある身としては実装編で感心する事がいくつも書いてあった。
一番感心したのは V8 のハンドルスコープ。ポインタとそうでないものが混ざったコールスタックをルートとせずハンドルスコープという仕組みを利用するのだそうだ。
要はコールスタックにポインタを詰むときにポインタをどこかに保存する方法。言われてみれば自然な方法なのだが、良く思いつくなあ。


結論としては GC に興味がある人は読んでみて損がないと思う。むしろお腹いっぱい気味で著者の GC への偏愛を感じるくらいだ。
そういえば Mosh に高速で正確な GC が欲しいと思う今日この頃なので時間があったら実装しようかな。

ガベージコレクションのアルゴリズムと実装