mrubyのgcを眺めていて把握したことを個人的メモ。 mrubyは世代別GC+インクリメンタルGCなわけだが、このインクリメンタルGCはtri-color inclemental gcとコメントに書いてあるようにオブジェクトのマーク状態を色で表現している。3色で白、灰色、黒となっていて、実際には白が2種類あるので4色なのだが、とりあえず3色である(?) 白はマークされていない状態、灰色は存在を確認したが参照先は見ていない状態、黒は参照先までチェックした状態となっている。 ■白と黒と灰色について とりあえず再帰型のシンプルなマーク&スウィープGCを作ると、最初にフラグをクリアしてマークしたもののフラグをセットしていき、マークが終わってからフラグがセットされていないオブジェクトをスウィープすることになる。この場合は2色である。 再帰型のマークはマシンスタックを消費するのであまりよろしくなくて