アルゴリズムとプログラミング
参照カウント法によるガベージコレクションの説明として正しいものはどれか。
ア.オブジェクトへの参照数が0になった時点でそのオブジェクトをメモリから解放する正解
イ.プログラム実行を一時停止し、ルートから到達できないオブジェクトをまとめて解放する
ウ.使用中のオブジェクトをメモリの片側に移動させ、もう一方の領域を一括解放する
エ.一定時間ごとにメモリをスキャンし、最長未使用のオブジェクトを解放する
解説
参照カウント法は「図書館の貸出台帳」方式。本(オブジェクト)を借りている人(参照)の数を常にカウントしておき、借りている人がゼロになった瞬間、本を棚(メモリ)から下ろす(解放する)仕組み。
なぜ ア が正解か
参照カウント法では、各オブジェクトに「自分を指している参照の数」を記録するカウンタを持たせる。参照が増えるとカウンタをインクリメント、参照がなくなるとデクリメントし、カウンタが0になった時点で即座にメモリを解放する。リアルタイムに解放できるが、循環参照(A→B→A)があるとカウンタが0にならず解放できないという弱点がある。
出典: AI生成問題(学習用)