GC実装のルール
- アルゴリズムはすべてのゴミを収集しなければならない
- 生きているオブジェクトは集めてはいけない
Mark and Sweep
マーク・アンド・スイープ(mark-and-sweep)は、ガベージコレクションの実装方法およびガベージコレクタの動作方法の一つ。
- allocated list をループし、mark bit をクリアする
- GCルートからはじめて、live object を見つける
- 到達したオブジェクトに mark bit をセットする
- allocated list をループし、mark bit がセットされていないオブジェクトに対して
- heap 内のメモリを回収して、free list に戻す
- allocated list からオブジェクトを削除する
ヒープの状態を確認する方法
jmap -histo