今日は第10章「DalvikVM の GC」マーク処理の続きからです。
- 再帰的にマークしないかわりにマーク処理が通った後のオブジェクトへの参照があったら専用のスタックに積んどく
- オブジェクトビットマップをスキャンする処理の後にスタックに積まれたオブジェクトのマーク処理をする。ここは参照するオブジェクトを再度スタックに積むので再帰的(Cの関数レベルの再帰はしていない)
- スイープフェーズ
- オブジェクトビットマップとマークビットマップを比較すると解放すべき死んだオブジェクトの場所がすぐわかる
- ヒープの巡回はマーク処理と同じ関数を利用してコールバックを変えて呼び出す
DalvikVM の GC は組み込み向けに省メモリを目指した GC のようですね。
明日からは第11章の Rubinius の GC です。楽しみです。