業界ダセハヤパャのののの高速高速検査ををを実現を実現した タ … · 「「「「VPVP5200MD----VVVV」」」」発売発売のお知知知知らせらせ
たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 ·...
Transcript of たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 ·...
![Page 1: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/1.jpg)
たまにはRubyGCの事を
思い出すなどしませんか
nari(中村)ネットワーク応用通信研究所
Powered by Rabbit 0.5.7
![Page 2: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/2.jpg)
注意いまからRuby内部のマニアックな
話をしますm(_ _)m
![Page 3: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/3.jpg)
自己紹介
![Page 4: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/4.jpg)
島根の方から来ました
3/133
![Page 5: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/5.jpg)
自己紹介nariと申します
はてなで「I am Cruby」というブログ
id:authorNari
GCのおかげでCRubyのコミッタになれました
GC = GarbageCollection
福岡出身で半年ほど前に島根へ
ネットワーク応用通信研究所所属 4/133
![Page 6: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/6.jpg)
よろしくお願いしま
す
![Page 7: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/7.jpg)
ここでいきなりアンケート
![Page 8: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/8.jpg)
GCに興味ある方?ノシ
![Page 9: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/9.jpg)
GCを触った事がある方?ノシ
![Page 10: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/10.jpg)
予想 200人中10人
![Page 11: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/11.jpg)
でも
![Page 12: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/12.jpg)
実はGC好きは世の中に多い
![Page 13: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/13.jpg)
アルゴリズムも沢山
http://wiki.livedoor.jp/author_nari/d/GC12/133
![Page 14: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/14.jpg)
私もそんなGC好きの1人
![Page 15: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/15.jpg)
15分程お付き合いください
![Page 16: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/16.jpg)
今日話す事GCについて
現在のRubyGC
GC改善でやったこと
未来のRubyGC
15/133
![Page 17: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/17.jpg)
今日話す事GCについて
現在のRubyGC
GC改善でやったこと
未来のRubyGC
16/133
![Page 18: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/18.jpg)
GCについて
![Page 19: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/19.jpg)
GCとは何か
![Page 20: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/20.jpg)
Wikipediaプログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。
19/133
![Page 21: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/21.jpg)
いらなくなったオブジェクトとかをよろしくやってくれる
![Page 22: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/22.jpg)
あっても意味のないものを自動で削除
21/133
![Page 23: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/23.jpg)
すごく良い子
![Page 24: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/24.jpg)
最近の言語にはほぼ搭載Java
Ruby
Perl
Python
23/133
![Page 25: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/25.jpg)
GCのライトサイド
http://www.flickr.com/photos/snapping/2358045173/ 24/133
![Page 26: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/26.jpg)
GCのライトサイドよけいなバグを生まなくなった
mallocとかfreeとかしなくていい!
25/133
![Page 27: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/27.jpg)
GCのダークサイド
http://www.flickr.com/photos/hotrodhomepage/15219315/ 26/133
![Page 28: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/28.jpg)
GCのダークサイドGC自体のバグが強烈
27/133
![Page 29: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/29.jpg)
GCの特徴として回収してくれるのが普通
日頃感謝しない
バグが出てくると腹が立つ
GCのせいで..GCのせいで..
28/133
![Page 30: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/30.jpg)
今回の発表はそんな可哀想なGCにスポットライトを
当てるものです
![Page 31: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/31.jpg)
今日話す事GCについて
現在のRubyGC
GC改善でやったこと
未来のRubyGC
30/133
![Page 32: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/32.jpg)
現在のRubyGC
![Page 33: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/33.jpg)
MarkSweep方式というアルゴリズムを採用
![Page 34: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/34.jpg)
Mark = 印付け
![Page 35: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/35.jpg)
Sweep = ゴミを掃く
![Page 36: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/36.jpg)
MarkSweep
![Page 37: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/37.jpg)
MarkSweep
![Page 38: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/38.jpg)
本当に名前の通りの動作
![Page 39: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/39.jpg)
Rubyのサンプルプログラムを元に説明
![Page 40: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/40.jpg)
サンプルプログラム
39/133
![Page 41: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/41.jpg)
実際にどう動くのか
40/133
![Page 42: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/42.jpg)
RObject作成,RArray参照
41/133
![Page 43: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/43.jpg)
RArray作成
42/133
![Page 44: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/44.jpg)
RObject作成,RArray参照
43/133
![Page 45: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/45.jpg)
RArray参照
44/133
![Page 46: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/46.jpg)
RArray唯一の参照削除
45/133
![Page 47: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/47.jpg)
ここからGCのはじまり
46/133
![Page 48: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/48.jpg)
Mark処理
47/133
![Page 49: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/49.jpg)
Sweep処理
48/133
![Page 50: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/50.jpg)
Sweep処理
49/133
![Page 51: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/51.jpg)
Sweep処理
50/133
![Page 52: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/52.jpg)
GC終了
51/133
![Page 53: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/53.jpg)
これがMarkSweepGC
![Page 54: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/54.jpg)
まさに印付け&ゴミ掃き
![Page 55: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/55.jpg)
RubyGCのアルゴリズム
![Page 56: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/56.jpg)
今日話す事GCについて
現在のRubyGC
GC改善でやったこと
未来のRubyGC
55/133
![Page 57: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/57.jpg)
GC改善
![Page 58: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/58.jpg)
私がやった事一覧GC::Profiler
BitmapMarking
57/133
![Page 59: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/59.jpg)
私がやった事一覧GC::Profiler
BitmapMarking
58/133
![Page 60: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/60.jpg)
GC::Profilerを作った
![Page 61: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/61.jpg)
こんな経験はありませんか
http://serif.hatelabo.jp/14819524be75304d0cab260af116bdd4f8bb8450/ 60/133
![Page 62: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/62.jpg)
こんな時Ruby1.8ではHeap領域の使用状況を手軽に得る手段が無い
GCにかかっている時間を手軽に得る手段が無い
61/133
![Page 63: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/63.jpg)
これからはもう安心
![Page 64: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/64.jpg)
Ruby1.9からの新機能
![Page 65: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/65.jpg)
GCのプロファイル機能
![Page 66: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/66.jpg)
GC::Profiler
![Page 67: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/67.jpg)
サンプルコードGC::Profiler.enable #Profiler起動
#..計測したい処理..
GC::Profiler.report #Profile結果表示
66/133
![Page 68: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/68.jpg)
表示されるProfile結果
67/133
![Page 69: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/69.jpg)
起動回数
68/133
![Page 70: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/70.jpg)
GCが起動した時間
69/133
![Page 71: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/71.jpg)
Heapの状況
70/133
![Page 72: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/72.jpg)
GCの処理時間
71/133
![Page 73: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/73.jpg)
役に立つ場面
![Page 74: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/74.jpg)
GCに問題があるかどうかの切り分け
![Page 75: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/75.jpg)
メモリリークの発見
![Page 76: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/76.jpg)
パフォーマンスチューニング
![Page 77: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/77.jpg)
その他には
![Page 78: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/78.jpg)
『こんなにメモリ使うの?』
ひとしきりニヤニヤ 77/133
![Page 79: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/79.jpg)
その具体例
![Page 80: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/80.jpg)
RailsでGC::Profilerを使って楽しむ
![Page 81: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/81.jpg)
デモ
![Page 82: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/82.jpg)
これはRailsプラグイン
として公開しました
![Page 83: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/83.jpg)
GCProfilerOnGraphRuby1.9.1で動作
Rails2.3くらいで動作するはず
http://github.com/authorNari/gc_profiler_on_graph/tree/master
82/133
![Page 84: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/84.jpg)
私がやった事一覧GC::Profiler
BitmapMarking
83/133
![Page 85: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/85.jpg)
BitmapMarkingを改善した
![Page 86: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/86.jpg)
ちょっと難しい話
![Page 87: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/87.jpg)
CopyOnWrite
![Page 88: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/88.jpg)
CopyOnWrite多くのLinux環境では子プロセス作成時(fork)のメモリは共有領域に置かれる
書き込みがあった際に,それぞれのプロセスの私有領域にコピーされる
(注)Rubyの機能ではない
87/133
![Page 89: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/89.jpg)
子プロセス生成時のメモリ領域
88/133
![Page 90: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/90.jpg)
実際にはコピーしない
読み込みをする時はそれでも充分
89/133
![Page 91: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/91.jpg)
書き込み(write)が発生
90/133
![Page 92: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/92.jpg)
そのタイミングで私有領域にCopy
91/133
![Page 93: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/93.jpg)
Writeの時に
![Page 94: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/94.jpg)
Copyする
![Page 95: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/95.jpg)
CopyOnWrite
![Page 96: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/96.jpg)
実はRubyGCとCopyOnWriteは相性が
悪い
![Page 97: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/97.jpg)
無駄なコピーの発生RubyGCではマークの際に生存している全てのオブジェクトに対して印付けする
つまりWriteする
forkしたプロセスの場合,CopyOnWriteが効いて無駄なコピーが..
96/133
![Page 98: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/98.jpg)
無駄なコピーの発生
97/133
![Page 99: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/99.jpg)
改善する手法
![Page 100: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/100.jpg)
BitmapMarkingGCオブジェクトの印付け用bitのみを別の領域に移す
これをビットマップと呼ぶ
オブジェクトの生存,死亡はビットマップにて管理
マーク時に直接オブジェクトを操作する事がなくなる
無駄なコピーが発生しにくい99/133
![Page 101: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/101.jpg)
Bitmap領域を確保
Bitmapは非常に小さいサイズ
100/133
![Page 102: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/102.jpg)
そこに印付けする
Copyが発生しない
101/133
![Page 103: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/103.jpg)
BitmapMarkingGC導入前例RubyEnterpriseEditionというRuby実装
Hongli Laiさん達によって作成
REEと呼ばれる
RubyOnRails+REE+Apacheで動作させた
リクエスト毎秒 22% が高速化
総メモリ使用量が 31% 削減した
102/133
![Page 104: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/104.jpg)
それで私がやった事は
![Page 105: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/105.jpg)
これを全部書き直し全部書き直し
REEではビットマップ位置探索がO(n)
普通のGCが耐えられない位遅い
これをO(1)に改善
ボトルネックの解消
ruby1.9に対応させた
104/133
![Page 106: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/106.jpg)
実装の詳細については
割愛
![Page 107: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/107.jpg)
続きは論文で!
http://www.narihiro.info/
まつもとさんと連名!
106/133
![Page 108: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/108.jpg)
今日話す事GCについて
現在のRubyGC
GC改善でやったこと
未来のRubyGC
107/133
![Page 109: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/109.jpg)
未来のRubyGC
![Page 110: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/110.jpg)
さっきの論文
![Page 111: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/111.jpg)
PROで発表しました
110/133
![Page 112: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/112.jpg)
なんと
![Page 113: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/113.jpg)
その他にも2つ
112/133
![Page 114: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/114.jpg)
世はGC戦国時代へ
http://www.flickr.com/photos/rowmuse/86900501/ 113/133
![Page 115: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/115.jpg)
私の論文は見事にReject
http://www.flickr.com/photos/jpockele/226331607/ 114/133
![Page 116: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/116.jpg)
orz
![Page 117: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/117.jpg)
発表内容をざっと説明
![Page 118: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/118.jpg)
Snapshot-GCSnapshot-GC(相川さん)
Markingのインクリメンタル化
GCの最大停止時間が短くなる
WriteBarrierを入れる場所をチェックする機能付き
今はminirubyしか動かない
117/133
![Page 119: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/119.jpg)
Mostly-CopyingGCMostly-CopyingGC(鵜川さん)
ConservativeなRubyGCにCopyingGCを実装
Compactionできる(メモリのデフラグ)
『良ければ明日にでも入れたい』まつもとさん談
118/133
![Page 120: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/120.jpg)
Ruby1.9にこの中のどれかは入るかも
![Page 121: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/121.jpg)
その他,私が今やってる事bdw-gc(BoehmGC)をRubyへ適用
来年のRuby会議までにやります!
(自分を追い詰めるメソッド)
120/133
![Page 122: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/122.jpg)
発表のまとめ
![Page 123: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/123.jpg)
発表のまとめRubyのGCはMarkSweep方式
Ruby1.9にはGCのProfilerが入った
RubyGCの未来は明るい
みなさんRuby1.9を使いましょう
122/133
![Page 124: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/124.jpg)
ご静聴ありがとうございました
![Page 125: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/125.jpg)
まだ時間がある?
![Page 126: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/126.jpg)
Narioのデモやりますね
![Page 127: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/127.jpg)
NarioとはRubyで作られた横スクロールアクションゲーム
126/133
![Page 128: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/128.jpg)
Ruby1.9でどれだけ高速化されるか
![Page 129: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/129.jpg)
Ruby1.8の場合デモ
![Page 130: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/130.jpg)
Ruby1.9の場合デモ
![Page 131: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/131.jpg)
Ruby1.9はやっぱり偉大ですね
![Page 132: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/132.jpg)
補足:GCはまったく関係ありません
![Page 133: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/133.jpg)
やっぱりRuby1.9使いましょう
![Page 134: たまには RubyGCの事を 思い出すなどしませんか - narihiro.info · 2011-03-11 · オブジェクトの印付け用bitのみを別の領域 に移す これをビットマップと呼ぶ](https://reader034.fdocument.pub/reader034/viewer/2022050217/5f634b7fbc344538cd20fb39/html5/thumbnails/134.jpg)
ご静聴ありがとうございした