際際滷

際際滷Share a Scribd company logo
わだあつし?@wats
Ruby 2.0 の
Bitmap Marking GC
って胆龍しいの
Tuesday, December 4, 2012
徭失B初
? わだあつし?@wats
? 幄塀氏芙?勉oやってます
? fukuoka.rb とか coder dojo とか fukuoka.py
とか苧佛才Sとか
? 栖定からスク`ルをはじめます
Tuesday, December 4, 2012
? Garbage Collection  =ゴミ?Ъ
? メモリの徭嚔_慧C
GCのおさらい
Tuesday, December 4, 2012
? 音勣になったオブジェクト = メモリI囃
? どうやって登協するのか
ゴミとは
Tuesday, December 4, 2012
? シンプルなMark & Sweep 圭塀
? 駅勣なオブジェクトをマ`クして、マ`クされなかっ
たものをゴミJ協
? JavaのGenerational GCのような伏贋豚gに栽わせた壅
塘崔などもない。
? そもそもコンパクションのCもないみたい
書までの Ruby GC
Tuesday, December 4, 2012
? Ruby1.9まではマ`クされたことを幣すフラグは光オブジェク
ト夛悶の嶄にある。
? GCを佩うと伏贋するオブジェクトに筝が秘るということ
? マ`クする = write している。
マ`ク
 = オブジェクトへの筝
Tuesday, December 4, 2012
? fork()というシステムコ`ルを坪何で聞っ
ているのがほとんどらしい
? fork() : 徨プロセスを恬る
牝融にRack アプリケ`ション
の匯違議な夛
Tuesday, December 4, 2012
? 伏撹輝兜はHプロセスのメモリをそのまま歌孚する。
徨プロセス伏撹の咾1
OSによるかも。
Tuesday, December 4, 2012
? 徨プロセスからそこへのきzみ = write がk伏して兜め
てプロセス阿硫隨がでる。
徨プロセス伏撹の咾
OSによるかも。
Tuesday, December 4, 2012
? そのrその何蛍のメモリI囃を徨プロセスが}u =
copyし、そこにきzむ = write する。
? これがいわゆる copy on write
? だから、Hプロセスからはメモリは圷の彜Bのまま
徨プロセス伏撹の咾
OSによるかも。
Tuesday, December 4, 2012
write があるとcopy
Tuesday, December 4, 2012
GCが恠ると伏贋しているオ
ブジェクトにマ`クのため
writeされる。
Tuesday, December 4, 2012
オブジェクトにg|議に餓がk伏し
ていないのにプロセスごとに畠てコ
ピ`される
Tuesday, December 4, 2012
これがサ`バサイドRubyのメ
モリMを寄させている。
Tuesday, December 4, 2012
? writeされているのは、伏贋していること
を幣すマ`ク喘の1bitだけ
? なら、オブジェクトはそのままプロセス
gで慌嗤させておきたい。
? マ`ク喘1bitだけをeI囃にだしちゃお
う
これを採とかしたい
Tuesday, December 4, 2012
? GCのマ`ク喘1bitだけを、オブジェクト
からeI囃にiき竃し
? GCrのwriteがそのeI囃だけになるの
で、オブジェクトは慌嗤のまま
? 恷詰泙離ブジェクトのコピ`だけがk
伏するようになる。
それが Bitmap Marking GC
Tuesday, December 4, 2012
? Unicorn や Passenger聞っているところで
はメモリMが和がるはず。
? GCのHのマ`クに1stepえるので、GC
のrgは裏らしい
? 徨プロセス恬らんようなところ┐燭世
rubyスクリプトとかには寓{ないかと
まとめ
Tuesday, December 4, 2012
? なんでOSのスレッド聞わんのですっけ
そもそも
Tuesday, December 4, 2012
? 書晩のパクリ圷
? http://patshaughnessy.net/2012/3/23/why-you-should-be-excited-about-
garbage-collection-in-ruby-2-0
? http://www.narihiro.info/resource/presen/bitmap_gc.pdf
? Rubyのスタックフレ`ム
? http://i.loveruby.net/ja/hack/frame.html
? Ruby Enterprise Edition はそもそもそんなGCらしい
? http://www.rubyenterpriseedition.com/download.html
歌深
Tuesday, December 4, 2012
寄蛍おおざっぱなメ
モリモデルのおさらい
Tuesday, December 4, 2012
スタックI囃とヒ`プI囃に
尖議に蛍けて聞う
Tuesday, December 4, 2012
メソッドコ`ル阿縫好織奪
にスタックフレ`ムがeまれ
る
Tuesday, December 4, 2012
Rubyの栽、畠てオブジェク
トなのでヒ`ブに恬られる。
Tuesday, December 4, 2012
? ☆gHは、ロ`カル篳を崩`したProcを卦したりす
るので、もっと}j。あくまで古勣
メソッドがK阻すると、そのスタックフレ`ムがpopされ、
念のメソッド┘好織奪フレ`ムの余嶄から壅_
Tuesday, December 4, 2012
Mark & Sweepのおさらい
Tuesday, December 4, 2012
ヒ`プにはどんどんオブジェクトがで
きるのでいつか怎りなくなる。
Tuesday, December 4, 2012
もう聞わなくなったオブジェ
クトもあるはず。。。
Tuesday, December 4, 2012
? 歌孚は、岷俊もg俊も根む
聞わなくなったオブジェクト = メソッド┘好織奪フレ`
ムからの歌孚がない
Tuesday, December 4, 2012
? こいつが仝write々してる
スタックから歌孚があるオブジェクトを壅「議にたどって
マ`クする。
Tuesday, December 4, 2012
? = 勣らない徨
? = GC
マ`クされなかったものは歌
孚されていない。
Tuesday, December 4, 2012
そのアドレスを勣らない徨リストに弖紗して、書瘁そこか
らメモリを工oしていく
Tuesday, December 4, 2012

More Related Content

Bitmap marking GC