【がべーじこれくしょん】
ガベージコレクション とは?
最終更新:
💡 メモリの「自動お掃除」
プログラムが使わなくなったメモリを自動で回収する仕組み。到達可能性を調べる方式では、実行中のプログラムから参照をたどれないオブジェクトを回収対象にする。
📌 このページのポイント
なぜGCが必要なの?
確保したメモリをいつ解放するか、全て手動で判断するのは難しいからだよ。解放忘れや、解放済みの領域を使う問題を減らせる。ただしGCがあっても、不要なデータを参照し続けると回収できず、メモリ使用量が増えることはあるんだ
GCの仕組みは?
例えばマーク&スイープは、変数などのルートから参照をたどり、到達できるものに印を付け、印のないものを回収するよ。互いに参照するだけでルートから到達できない集まりも対象になる。参照数だけで判断する方式とは違うんだ
世代別GCは別の方式?
Stop-the-Worldって何?
GCの処理のためにアプリの実行を一時停止することだよ。応答時間に影響するので、停止を短くする工夫がある。例えばGoのGCは多くの処理をアプリと並行して行うけれど、短い停止もある。常に1ms以下とか、GCの間ずっと止まるとは言えないんだ
RustにはGCがないのに、手動で全部解放するの?
まとめ:ざっくりこれだけ覚えればOK!
「ガベージコレクション」って出てきたら「不要なメモリを自動で回収する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Garbage Collection (GC)」 = ごみ収集
💬 Garbageはごみ、Collectionは収集。使わなくなったメモリを回収することを、ごみ収集にたとえた名前だよ