« ガベージコレクションのアルゴリズムと実装を読む(3日目) | トップページ | 3月27日のトレーニング »

2010年3月28日 (日)

ガベージコレクションのアルゴリズムと実装を読む(4日目+5日目)

ガベージコレクションのアルゴリズムと実装を読み始めて5日目になりました。

4日目の記事を残しておくのを忘れてしまいましたが、4日目はコピーGCを読みました。
5日目はマークコンパクトGCでした。

コピーGCには以下のメリットがあります。
(From領域からTo領域にコピーするときに領域がコンパクションされるため、
$freeがつめ直した最後に設定される。ということで、確保する時に$freeをずらせば良い)

キャッシュメモリとの相性が良い(参照関係があるオブジェクトをコピーするため)

デメリット
ヒープ領域が2分割されるため領域の使用効率が悪い。
再起関数呼び出しでスタックオーバーフローが起こる可能性がある。

など、一長一短があるようです。

マークコンパクトGCについてですが、
メリットはコピーGCと同じく、フラグメンテーションが発生しない。
ヒープ領域が有効活用できるなどがあるようです。

デメリット
コンパクションの処理にコストがかかる。(3回ヒープ領域をscanする)

デメリットを解消するために
Two-Fingerアルゴリズム、テーブルアルゴリズムがあります。
(Scan回数が2回で済む)

ImmixGCというのもあるそうですが、難解そうだったのとSoftbankのUstを見ていたので
今回はSkipしました。

個人的にはマークコンパクトGCは難しいイメージがありますね。

|

« ガベージコレクションのアルゴリズムと実装を読む(3日目) | トップページ | 3月27日のトレーニング »

C言語」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/50625/47931711

この記事へのトラックバック一覧です: ガベージコレクションのアルゴリズムと実装を読む(4日目+5日目):

« ガベージコレクションのアルゴリズムと実装を読む(3日目) | トップページ | 3月27日のトレーニング »