ガベージコレクション
ガベージコレクションとは
ガベージコレクション(英:garbage collection)とは、コンピュータプログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放し、空き領域として再利用できるようにすることです。GCという略記で表記されることもあります。
次の図は、ガベージコレクションのイメージ例です。
主記憶装置(メインメモリ)上にロードされたプログラムが不要になったタイミングで自動的に解放し、空き領域として再利用できるようにしています。
従来のプログラムは、プログラマが明示的にメモリの解放を行う必要があり、解放コードを書き忘れるとメモリ上から解放されず、空き領域が逼迫する要因となっていました。
ガベージコレクションでは、実行中のプログラムの動作から不要になったと判断した領域を自動的に解放し、空き領域として再利用できるようにします。
ただし、解放処理がいつ行われるのか開発者があらかじめ予見することが難しく、また不要であると機械的には判断できずなかなか解放されないこともあります。
メモリコンパクションとの違い
メモリの断片化(空き領域がバラバラになる現象)を解消する機能をメモリコンパクションといい、実現方法によってはガベージコレクションと共にメモリコンパクションも行う仕組みとなっています。
そのため、メモリコンパクションを含めてガベージコレクションと呼ぶ場合もありますが、厳密には区別されています。
次の図はメモリコンパクションのイメージ例です。
メモリコンパクションでは、主記憶装置にロードされているプログラムを再配置することで、分割されてしまった空き領域を連続したひとつの空き領域にします。