令和元年度 III-4

科目: 専門科目 / 分野: 情報工学部門 / 年度: 令和元年度

III-4 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

局所変数とヒープ上のレコードの参照関係図から、マーク・アンド・スイープごみ集めで回収されるレコードを求める問題。

解説

この問題で問われていること

ルート(局所変数)から参照をたどって到達できないレコードを、ごみとして回収されるものとして選ぶ問題。

解き方

① マーク・アンド・スイープ=局所変数(ルート)から矢印をたどれるものに印を付け、印のないものを回収する
② 局所変数から 'a'、'd'、'g' に届く。'd'から'e'と'g'へ。'a'・'e'・'g'からは矢印なし → 印あり: a,d,e,g。回収: b,c,f('b'→'d'、'c'→'f'、'f'→'c'の矢印があっても、ルートから届かない)
③ ③

正解が正しい理由

マーク・アンド・スイープでは、ルート(使用されている局所変数)から参照をたどって到達できるレコードに印を付け(マーク)、印のないレコードを回収する(スイープ)。局所変数は'a'、'd'、'g'を参照し、'd'はさらに'e'と'g'を参照する。到達可能なのは'a'、'd'、'e'、'g'で、'b'、'c'、'f'はルートから到達できない('c'と'f'は互いに参照しているが、循環参照でも到達できなければ回収される)。したがって③が正しい。

各選択肢について

覚えるべきポイント

マーク・アンド・スイープはルートからの到達可能性で判断するので、循環参照していても到達できなければ回収される(参照カウント方式ではこれを回収できない)。

キーワード: ガベージコレクション、マーク・アンド・スイープ、ヒープ、参照、情報工学部門