マーク・アンド・スイープ
基本的な方針は、あるオブジェクト(ここでは、ルートオブジェクトと呼ぶ)からのトラバース(オブジェクトから別のオブジェクトへの参照を辿ること)によって到達可能なオブジェクトに印(マーク)をつけ、印のつかなかったオブジェクトを破棄(スイープ)する、というものである。
具体的な手順の一例は次のようになる:
ルートオブジェクトに印をつける
直前に印をつけたオブジェクトから、1回のトラバースで到達可能なすべてのオブジェクトに印をつける(すでに印がついているものについては何もしない)
2の操作を、印がつかなくなるまで行う
印がついてないオブジェクトを破棄する