正答1
解説
正解は1です。
実行中に記憶領域を確保・解放する動的割当てを繰り返すと、どこからも参照されない領域が残ることがあります。
こうした不要な領域は「ごみ(ガーベジ)」と呼ばれ、放置すると使える記憶領域が減っていきます。
【選択肢別解説】
1:○ ガーベジコレクションは、どこからも参照されなくなった領域を自動的に検出して解放し、再び利用できるようにする機能です。
JavaやPythonなど多くの言語処理系が備えています。
2:× スタックは、後から入れたデータを先に取り出す(LIFO:Last In First Out)記憶領域やデータ構造です。
不要な領域を回収する機能ではありません。
3:× ヒープは、動的に割り当てられる記憶領域そのものを指します。
ごみが発生する場所ではありますが、ごみを回収する機能ではありません。
4:× フラグメンテーション(断片化)は、割当てと解放の繰返しで空き領域が細切れになる現象です。
領域を再利用可能にする機能ではなく、問題となる現象の名前です。
【ポイント】
断片化した空き領域を一か所にまとめる操作は、コンパクション(メモリコンパクション)と呼ばれます。
ガーベジコレクションは不要領域の回収、コンパクションは空き領域の連続化と区別して覚えます。