ガベージコレクションのアルゴリズムと実装 3,4章

ustの進みに合わせて毎週読みます。 http://www.ustream.tv/recorded/5849980
GC
1
前へ 1 ・・ 7 8
Shinichi Tokunaga @deepneko

CheneyのコピーGCの場合、A→B、A→C、B→D、B→E、B→H、B→I、C→F…っていう参照があったとすると

2010-04-08 23:05:35
Shinichi Tokunaga @deepneko

ページサイズをオブジェクト3個分とすると、[A・B・C] [D・E・F] [H・I]・・・っていう風にヒープには配置されちゃうわけ。

2010-04-08 23:06:39
Shinichi Tokunaga @deepneko

でも、この手法ならページサイズ分の深さ探索ができるわけよ。

2010-04-08 23:07:30
Shinichi Tokunaga @deepneko

だめだ。どうやってもうまく説明できない。

2010-04-08 23:07:38
Shinichi Tokunaga @deepneko

コピーGCの最大の欠点はヒープ領域が半分になること。じゃ、もっと細かく分割しよっか。

2010-04-08 23:09:59
Shinichi Tokunaga @deepneko

ヒープ領域を2等分して、ある2つに対してはコピーGC。残りの全部に対してはマークスイープをする。

2010-04-08 23:10:40
Shinichi Tokunaga @deepneko

あ、うそ。ヒープ領域をN等分してw

2010-04-08 23:10:54
Shinichi Tokunaga @deepneko

だんだんややこしくなってきたな。ここも簡単にいこう。

2010-04-08 23:14:31
Shinichi Tokunaga @deepneko

N等分にわける。To空間がGCのたびに1つずつ右にずれていくイメージ。

2010-04-08 23:15:53
Shinichi Tokunaga @deepneko

オブジェクトがFrom空間にある場合はコピーする。From空間以外にある場合はマークして、子オブジェクトを再帰的にマークまたはコピー。

2010-04-08 23:17:29
Shinichi Tokunaga @deepneko

まぁ、つまりmark_or_copyに渡されるオブジェクトは、From空間にあるならコピーGC、From空間以外にあるならマークスイープの対象だと思えばよい。

2010-04-08 23:18:39
Shinichi Tokunaga @deepneko

複数空間コピーのメリット: 使用できないのはヒープ領域の1/Nだけ。

2010-04-08 23:21:19
Shinichi Tokunaga @deepneko

複数空間コピーのデメリット: マークスイープのデメリットが乗っかる。結局マークスイープとコピーGCの領域の比率によるんだが、どっちの良いとこも悪いとこも背負うことになる。

2010-04-08 23:22:30
前へ 1 ・・ 7 8