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

2010年3月25日 (木)

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

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

今日は、分散して読んだのでちょっと記憶が飛んでいる部分がありますが、
今日のGCは「参照カウント法」でした。

オブジェクトにカウントフィールドを持たせて、被参照数をカウントしておく方法でした。
確かにカウント数が分かれば、ポインタをたどらなくてもカウンタが0になった瞬間に
FreeListに登録するだけで済みます。
(FreeListに登録されているものを回収すれば良い)

ただ、参照カウントを持つとメモリを食うという状況がでてしまうので、
(1オブジェクトに4バイト)
カウントの容量を押さえたSticky参照カウント法とか、1ビット参照カウント法なんてものも
あるようです。(カウントオーバーフロー時は無視するというのには、「仕様として割り切る」ってのも
大事だと再認識しました。)

最大の弱点が「循環参照を回収できない」という点があるみたいですが、
部分マークスイープ法と組み合わせて弱点を補う事ができるなど、
GCも奥が深いですね。

|

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

C言語」カテゴリの記事

コメント

コメントを書く



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




トラックバック

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

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

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