Qraft(クラフト) 資格・学習クイズアプリ

基本情報技術者試験 練習問題 19:メモリ管理とガベージコレクション

ガベージコレクション(GC)について述べた文として、正しいものはどれか。

  1. ガベージコレクションはメモリ領域から不要な(参照されない)オブジェクトを自動的に検出し、メモリを解放する機構である。
  2. ガベージコレクションにより参照カウント方式が完全に排除され、メモリリークは発生しなくなる。
  3. ガベージコレクション中は一時的にプログラムが停止する可能性があり、このを「GCストップ・ザ・ワールド」と呼ぶ。
  4. 世代別GCは新規生成オブジェクトがより頻繁に回収されるため、実行時間が常に短縮される。
  5. ガベージコレクションはJavaやPythonのみで実装され、C/C++では利用できない。
正解と解説を見る
正解:ガベージコレクションはメモリ領域から不要な(参照されない)オブジェクトを自動的に検出し、メモリを解放する機構である。

ガベージコレクション(GC)はメモリ管理を自動化する仕組みで、メモリリークの防止に貢献します。

GCの基本的な動作:

プログラムが使用するメモリは以下のように遷移します:
1. プログラムがオブジェクトを生成 → ヒープメモリに割り当て
2. オブジェクトへの参照がなくなる(どこからも参照されない)
3. GCが「到達不可能」なオブジェクトを識別
4. GCがメモリを自動的に解放

正しいのは「ガベージコレクションはメモリ領域から不要な(参照されない)オブジェクトを自動的に検出し、メモリを解放する機構である」です。

GCの実装方式:

参照カウント方式:各オブジェクトの参照数をカウント。参照数がゼロになったらメモリ解放。循環参照でリークする可能性。

マーク・スイープ:実行可能なオブジェクトをマークして、マークされていないオブジェクトを削除。

世代別GC:新規オブジェクトはより頻繁に回収候補になる(若いオブジェクトほど寿命が短い傾向があるため)。このため平均的にGC時間が短縮される可能性が高い。

GCストップ・ザ・ワールド:
GC実行中にプログラムが一時停止する現象。この間、ユーザー操作への応答遅延が発生します。

GC対応言語:Java、Python、C#、Ruby、Go等。C/C++でも外部ライブラリで実装可能。

← 前の問題問題一覧次の問題 →
アプリで解いてレーティングを上げる(無料・登録不要)