参照カウント
すべてのオブジェクト(メモリ上に置かれているデータの単位)に対して、参照カウントと呼ばれる整数値を付加しておく。これは、このオブジェクトへの参照(あるいはポインタ)がシステム全体にいくつ存在しているかを数えるものである。
オブジェクトへの参照が変化するたびにこの値は随時書き換わる。
参照カウントが0になったものについては破棄が許される。ただし、ファイルキャッシュのように参照カウントが0になっても直ちにオブジェクトを破棄せず、再利用に備えてリソースの容量が許す限り保存してもかまわない。この場合、オブジェクトを破棄するための判断には別の基準が必要となる。
共有された単一のオブジェクトへの参照ではなく、独立したデータを擬似的に表現する場合は、下記の処理を追加する。
オブジェクトのコピーが要求されても、実際にはコピーを行わず元のオブジェクトへの参照を返し、参照カウントに1加える。
オブジェクトの変更が行われる場合は、以下の手順で行う 参照カウントが1であればそのまま書き換える。 参照カウントが2以上であれば、元のオブジェクトをコピーして参照カウントが1の新オブジェクトを作成し、それを書き換える。元のオブジェクトの参照カウントは1減らす。