マーク&スイープアルゴリズム
Infoガベージコレクション(Garbage Collection) の手法の一つで、
メモリ上でこれ以上参照されなくなったオブジェクトを見つけ出し、メモリを回収する方法
Mark
ルートオブジェクトから開始し、到達可能なすべてのオブジェクトを見つけてマークする
- オブジェクト生成:0でマーク
- すべてのルートからグラフ探索:1でマーク
ルートオブジェクト
ガベージコレクションにおいて「開始点」の役割を果たし、プログラムから直接アクセス可能なオブジェクトの集合
- スタック上の変数
- グローバルオブジェクトおよび変数
- レジスタに保存された値
Sweep
マークされていないオブジェクト(つまり、これ以上到達できないオブジェクト)をメモリから削除する
- 0でマークされたオブジェクトの整理
- すべてのオブジェクトのマーキングビットを初期化(Markフェーズで再び1に変更される)
短所
- ガベージコレクション実行中はプログラムの実行が一時停止する
- 断片化問題が発生する
- 使用可能なメモリ空間が細かく分断され、デフラグメンテーションが必要になる