【アルゴリズム】メモリの自動掃除屋!「ガベージコレクション」|情報処理問題1000本ノック
プログラムを実行するとメモリ(ヒープ領域)を消費しますが、使い終わった領域をそのままにするとメモリ不足に陥ります。これを自動で解決する「ガベージコレクション」を攻略しましょう。
1. 問題:メモリの自動解放機構
【 問題 】 プログラムが動的に確保したメモリ領域のうち、不要になった(どこからも参照されなくなった)領域を自動的に検出し、解放して再利用可能にする機構を何と呼ぶでしょうか?
ア、メモリリーク イ、ガベージコレクション ウ、フラグメンテーション エ、ページング
2. 正解:メモリ管理に関する正解
正解: イ、ガベージコレクション
3. 解説:ゴミ(Garbage)を回収(Collection)する
ガベージコレクション(GC)は、プログラマが明示的にメモリ解放のコードを書かなくても、実行環境が裏側で不要なメモリを掃除してくれる画期的な仕組みです。
【図解:ガベージコレクションの役割】
1. メモリの確保
・プログラムが新しいデータを作る際、メモリを「動的」に確保します。
2. 参照の喪失
・そのデータを使わなくなり、どの変数からもアクセスできなくなると「ゴミ(Garbage)」になります。
3. 自動解放
・GCが定期的に「ゴミ」を見つけ出し、メモリを空き状態に戻します。
1. メモリの確保
・プログラムが新しいデータを作る際、メモリを「動的」に確保します。
2. 参照の喪失
・そのデータを使わなくなり、どの変数からもアクセスできなくなると「ゴミ(Garbage)」になります。
3. 自動解放
・GCが定期的に「ゴミ」を見つけ出し、メモリを空き状態に戻します。
[ メモリ関連の重要用語 ]
★ メモリリーク:解放すべきメモリが放置され、空きメモリが減り続ける現象。GCがない言語(C言語など)で発生しやすい不具合です。
★ フラグメンテーション:メモリの空き領域が細切れになり、大きなデータが格納できなくなる「断片化」現象。
★ コンパクション:断片化したメモリを整理整頓して、連続した空き領域を作る作業(GCの一部として行われることが多い)。
★ メモリリーク:解放すべきメモリが放置され、空きメモリが減り続ける現象。GCがない言語(C言語など)で発生しやすい不具合です。
★ フラグメンテーション:メモリの空き領域が細切れになり、大きなデータが格納できなくなる「断片化」現象。
★ コンパクション:断片化したメモリを整理整頓して、連続した空き領域を作る作業(GCの一部として行われることが多い)。
1. 理解のコツ: 昔のプログラミング(C言語など)では「借りたものは自分で返す(free)」のがルールでしたが、返し忘れるミスが多発しました。ガベージコレクションは「ホテルの清掃員」のように、客がチェックアウト(参照終了)した後に自動で部屋を片付けてくれるサービスだとイメージしてください。
2. 試験対策の視点: アルゴリズムやプログラミングの基礎として頻出です。特に「Java」などのモダンな言語では標準機能であること、またGC実行中にはプログラムが一瞬止まる(Stop The World)といった特性があることも併せて知っておくと完璧です。
4. まとめ
「不要なメモリ領域を自動的に開放する」。これがガベージコレクションです。開発者がメモリ管理の苦労から解放され、本来のロジック開発に集中できるようにするための重要な技術であることを押さえておきましょう!
PR