本書はガベージコレクションを扱った、数少ない日本語の本。 アルゴリズム編と実装編に分かれている。
アルゴリズム編では
を豊富な図と擬似コードで丁寧に解説している。
実装編では
- Python
- DalvikVM
- Rubinius
- V8
の GC アルゴリズムを、実際のソースコードを読み解きながら解説していて、
- Python は参照カウントとマークスイープ GC
- DalvikVM はマークスイープ GC
- Rubinius は世代別 GC とマークスイープ GC とコピー GC
- V8 は世代別 GC でマークスイープ GC とマークコンパクト GC とコピー GC
というように、本書で扱ったアルゴリズムが実際に使われていることを実感できる。
本書で扱っていない言語だと、自分の観測範囲では
- デスクトップ向けやサーバー向けの.NET Frameworkは、マークコンパクト GC と3世代の世代別 GC*1
- SwiftはARCなので参照カウント*2
- Golang は Concurrent Mark & Sweep*3
てな感じで、やはりモダンな言語には GC が実装されている。 その多くが、本書で紹介されたアルゴリズムの改良や組み合わせで、 GC 登場から 50 年たっても基本は変わっていないんだなと感服。
最新技術を追うのも楽しいけど、普遍的な技術を身につけたいと思っていた。 GC はお世話になっているので、取っ掛かりとしては丁度良かった。 興味もあったし。 本書はカジュアルで読みやすかったのでオススメ。