GC(ガベージコレクション)
Garbage Collection
プログラムが使わなくなったメモリを自動的に片付けて再利用できるようにする仕組み。
簡単に説明すると
ガベージコレクションは、プログラムが動いている間に、もう使わなくなったメモリ領域を自動的に見つけ出して解放する機能だよ。 スマートフォンなどのアプリ実行中には多様なデータがメモリに保存されるが、不要なデータが残るとメモリ不足により動作に支障が出ることもあるんだ。 この機能がバックグラウンドで不要なデータを回収することで、他の作業に使える空きスペースを確保しやすくしているんだよ。
名前のヒミツ
Garbage Collection(ガベージコレクション)は、英語で「ごみの回収」という意味なんだ。プログラムが一時的に使っていたメモリ領域の中で、不要になったデータを「ごみ」に見立てて、それを自動で拾い集めて整理する様子から名付けられたんだよ。
くわしく見てみよう!
ガベージコレクションとは、プログラムが実行中に一時的に確保したメモリ領域のうち、参照されなくなって不要になった部分を自動的に検知して解放する仕組みのことなんだ。
ざっくり言うと、コンピュータの中の「ごみ拾い」のような役割をしているよ。
メモリ容量には限りがあるから、使い終わったデータを放置しておくと、新しいデータを置く場所がなくなってプログラムが止まってしまうんだよ。
GCを使わない言語や環境でのメモリ管理方法は一つではなく、たとえばC言語のように開発者が自らコードを書いて「このメモリはもう使わないから返す」と1つずつ指示を出す方式もあれば、Rustのように変数の役目が終わったタイミングで言語の仕組みが自動的にメモリを返してくれる方式もあるんだ。
前者の方式では、指示を書き忘れるとメモリがどんどん足りなくなる「メモリリーク」というトラブルが起きやすかったんだね。
そうした中で、プログラムの実行中にメモリの使用状況そのものを見て「あ、このデータはもうどこからも使われていないな」と判断し、ごみとして回収する仕組み、つまりGCが広く使われるようになったんだよ。
具体的には、どの変数からもたどることができなくなったデータを対象にして、新たにデータを配置するための空きメモリが不足した際などに、システムが判断して動的に回収を実行しているんだ。
これによって開発者はメモリ管理の細かな手間から解放されて、本来のプログラムの機能作りに集中できるようになったんだね。
ただし、回収の処理中はプログラムの動作がほんの一瞬だけ止まることもあるから、非常に高いスピードが求められるゲームなどでは工夫が必要になることもあるよ。