SlideShare a Scribd company logo
1 of 137
Download to read offline
Rubyによる本気の
            GC
                                      Serious GC with Ruby

                                                 @nari3
                                                  #sprk2012
                                                  2012/9/15
                           ネットワーク応用通信研究所
Rubyによる本気のGC - Serious GC with Ruby                 Powered by Rabbit 2.0.5
提供




Rubyによる本気のGC - Serious GC with Ruby        Powered by Rabbit 2.0.5
うなぎの件




       <URL:https://www.wantedly.com/projects/478>

Rubyによる本気のGC - Serious GC with Ruby                  Powered by Rabbit 2.0.5
自己紹介


      ✓ 中村成洋/@nari3/nari/authorNari
      ✓ CRubyのコミッタ
      ✓ GCメンテナ&デストロイヤ


Rubyによる本気のGC - Serious GC with Ruby          Powered by Rabbit 2.0.5
GCとは(ry
GoogleTrendでみるGC
休日の検索数が
 さがっている
つまり
      ✓ 平日
             ✓ お仕事でGCを作るリア充
             ✓ もしくはGCバグに悩まされる一般ピ
               ープルが多い

      ✓ 休日
             ✓ 趣味でGCをいじる人が少ない

Rubyによる本気のGC - Serious GC with Ruby         Powered by Rabbit 2.0.5
GCはまだまだ愛されてい
     ない
ちなみに:年末も異常に検索
         されている




                               リアルGCの恐れ..
Rubyによる本気のGC - Serious GC with Ruby         Powered by Rabbit 2.0.5
とにかく
  GCをもっと
よく知りましょう!
徹底解剖G1GC
 実装編
正式版公開!!
(無料配布)
この場を借りて本書のス
ポンサーのみなさまあり
 がとうございます
    m(_ _)m
Ruby2.0 の GC update
偉い人がいってた
「全力で潰す」
  http://www.flickr.com/photos/recompile_net/5952564080
Matz mashes something,
so we mash something.
僕もなにか潰したい!
REE is dead




       <URL:http://blog.phusion.nl/2012/02/21/ruby-enterprise-
       edition-1-8-7-2012-02-released-end-of-life-imminent/>

Rubyによる本気のGC - Serious GC with Ruby                      Powered by Rabbit 2.0.5
諸君らが愛したREEは死
     んだ。
    なぜだ!
BitmapMarking


      ✓ fork使うようなプログラムで嬉
        しいはず
      ✓ Passengerなどで恩恵があるらし
        い


Rubyによる本気のGC - Serious GC with Ruby         Powered by Rabbit 2.0.5
REEつぶしたった
    (^o^)
最近の悩み:
    Kijiは
どうやって潰そうか…
本題
RubyでGCを書くという
      お話
動機(1)
RubyKaigi Driven
  Development
過去のRubyKaigiの発表...

      ✓ LazySweepGC - RubyKaigi2008
      ✓ LonglifeGC - 2009
      ✓ LazySweepGC - 2010
      ✓ ParallelMarkingGC - 2011

Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
全部Cの話やないか!
Rubyの話、させてください
動機(2)
結論:C死ね。
                             [cited from `卜部昌平のあまりreblogしないtumblr']




Rubyによる本気のGC - Serious GC with Ruby                          Powered by Rabbit 2.0.5
ほんとどのGCは
C or C++で書かれている
       しなぁ…
な ぜCで書く必 要が あ
                       る?ないはずだよ。ち
                       ゃんと調査すればJava
                       とかC#とか、ひょっと
                       したらOCamlやScalaで
                       でも用は足りる場合が
                       ほとんどなんだ。
                             [cited from `卜部昌平のあまりreblogしないtumblr']

Rubyによる本気のGC - Serious GC with Ruby                          Powered by Rabbit 2.0.5
RubyでGC
書いてみよう!
素直に考えると...
これはあまり意味がない

      ✓ 下にいるGCの性能に影響をう
        ける
             ✓ 性能評価しづらい
             ✓ 下のGCが遅いと、上のGCも遅くな
               る



Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
これはあまり意味がない


      ✓ 言語処理系にGCは1つあればい
        いですよ感
             ✓ 無駄に話が複雑になっているような
               気がする




Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
もっと違うアプローチを
   考えよう!
Meta-circular evaluator
An evaluator that is
                       written in the same
                       language      that    it
                       evaluates is said to be
                       metacircular.
                              [cited from `4.1 The Metacircular Evaluator - SICP']



Rubyによる本気のGC - Serious GC with Ruby                                       Powered by Rabbit 2.0.5
簡単な例:
LISPでLISP書いたった
他の具体例を調べてみる
もう少し詳しく


      ✓ RPython(Restricted Python)で実
        装
             ✓ Pythonの言語サブセット

      ✓ RPython -> C/LLVM/Java..


Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
変換イメージ
重要なポイント
GCも
RPythonで書
 かれている
疑問
GC動作中のGCはどうするの
         か?


      ✓ GC動作中にGCが起きて、その
        動作中にGCが起きて…
             ✓ GCの無限ループ...?



Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
RPython

      ✓ GC中はGC対象のオブジェクト
        を作らないように気を付ける
        (たぶん)
             ✓ mallocなどで直接メモリを切り出す
                  ✓ libffiを利用




Rubyによる本気のGC - Serious GC with Ruby             Powered by Rabbit 2.0.5
GC中にGCが走ることは
     ない
仕組み(ry
ただし


      ✓ GCをRubyで書く仕組みがない
             ✓ 今考えればRubiniusをいじったほうが
               よかったかも…?
                  ✓ まぁいいか...




Rubyによる本気のGC - Serious GC with Ruby         Powered by Rabbit 2.0.5
JikesRVM


      ✓ RVM(Research Virtual Machine) = 研究用VM
             ✓ GC,VM周りでたくさん論文が書かれ
               ている




Rubyによる本気のGC - Serious GC with Ruby              Powered by Rabbit 2.0.5
JikesRVM


      ✓ GCもJavaで書かれている
      ✓ プロジェクト委員の一人が
        Rechard Jones(RJGC著者)



Rubyによる本気のGC - Serious GC with Ruby              Powered by Rabbit 2.0.5
直接オブジェクトファイルを
        吐く




Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
GCもJavaで書ける


      ✓ 一緒にオブジェクトファイルに
        変換される
      ✓ GC中はGCが発生しない
             ✓ PyPyと同じ理由



Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
JikesRVMの功績は
「GCをJavaでかける」
    だけではない
GC部分がMMTkという
別部品に切り離されてい
     る
MMTk(Memory Management
          Tool kit)

      ✓ GCを11個保有
      ✓ ツールキットなのでGC用の便
        利メソッドが沢山ある
             ✓ GCづくりが簡単


Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
MMTk(Memory Management
          Tool kit)

      ✓ VMからメモリ管理を別の部品
        として切り離せる
             ✓ VMは取り替え可能
                  ✓ JikesRVM
                  ✓ Harness



Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
やたー!
GC書き放題!
Javaで…
Rubyで書きたい…ッ!!
われわれにはJRubyがあ
  るじゃないか
この部分を
ライブラリ化
Regicide
Regicde = 国王殺し




Rubyによる本気のGC - Serious GC with Ruby    Powered by Rabbit 2.0.5
サンプルコード
オブジェクトの定義


            class FixnumValue < Regicide::Mutator::ObjectValue
             # ...
            end

     Regicide::Mutator::ObjectValueを継承




Rubyによる本気のGC - Serious GC with Ruby                        Powered by Rabbit 2.0.5
オブジェクト生成


            class FixnumValue < Regicide::Mutator::ObjectValue
             # Fixnumをフィールドに持つ
             # オブジェクトを割り当てるメソッド
             def self.from_i(mutator, i)
               ...
             end
            end




Rubyによる本気のGC - Serious GC with Ruby                        Powered by Rabbit 2.0.5
from_i

           # メモリ割り当て
           ptr = mutator.alloc(0, 1, mutator.current_stack.pc)
           # オブジェクト生成
           v = self.new(ptr)
           # Fixnumを格納
           mutator.store_data_field(v.object_value, 0,
            org.vmmagic.unboxed.Word.from_long(i))
           return v


Rubyによる本気のGC - Serious GC with Ruby                       Powered by Rabbit 2.0.5
M&S GCは4行で書ける



            class MSConstraints < org.mmtk.plan.marksweep.MSConstraints; end
            class MS < org.mmtk.plan.marksweep.MS; end
            class MSCollector < org.mmtk.plan.marksweep.MSCollector; end
            class MSMutator < org.mmtk.plan.marksweep.MSMutator; end




Rubyによる本気のGC - Serious GC with Ruby                                    Powered by Rabbit 2.0.5
動作するサンプル
           ↓
<URL:https://github.com/authorNari/regicide/tree/master/
                       sample>
苦労話
Java+JRuby


      ✓ JRuby側からJavaを使うのは簡
        単
             ✓ メソッド呼び出し
             ✓ 継承とかとか



Rubyによる本気のGC - Serious GC with Ruby            Powered by Rabbit 2.0.5
Java+JRuby


      ✓ Java側からJRubyを使うのは難
        しい
             ✓ けっこう意外だった




Rubyによる本気のGC - Serious GC with Ruby            Powered by Rabbit 2.0.5
どいうことか?
どうやるの
(?_?)
RedBridge
RedBridge

      ✓ @yokoletさん作(感謝!)
      ✓ Javaの中でJRubyの実行環境
        (コンテナ)を作る
             ✓ コンテナにソースコードぶちこんだ
               り、Rubyコード片を評価できる


Rubyによる本気のGC - Serious GC with Ruby               Powered by Rabbit 2.0.5
イメージ
             public static void foo(void) {
              // JRuby実行環境作って
              ScriptingContainer sc =
                new ScriptingContainer();

                 // さっきのJRubyFooクラスを読み込み
                 Object jrubyFooClass =
                   sc.runScriptlet(PathType.ABSOLUTE, "foo.rb");

                 // JRubyFoo.fooを呼び出す
                 sc.callMethod(fooClass, "foo", Object.class);
             }

Rubyによる本気のGC - Serious GC with Ruby                              Powered by Rabbit 2.0.5
Regicideでは
この辺の技術を
 なんやかんや
  使ってます
Regicideの悪いところ
VM作るのめんどい
けっきょくVMは書かないと
        いけない
      ✓ GCを評価するためにはある程
        度ちゃんとしたものが必要
             ✓ でもVMとか興味ないしさぁ…

      ✓ LISPすら作るのが億劫
      ✓ 飽きてきた
Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
JVMのGCの
影響を受ける
ふつうにJavaのコードとして動かす感
          じ
JVMのGCに引っ張られる


      ✓ 性能が引っ張られる
             ✓ GC停止も不可能だしきちんと性能評
               価しづらそう
                  ✓ 論文とか書きづらそう




Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
変換ができればいいのに…

      ✓ JikesRVMのブートストラップ
        部分にJRubyを突っ込む
             ✓ うまく動かなかった
                  ✓ JRubyがJikesRVMの秘孔を付いているらしい
                  ✓ JikesRVMがまだ未熟




Rubyによる本気のGC - Serious GC with Ruby       Powered by Rabbit 2.0.5
Regicideの良いところ
VMが自分で書ける
言語処理系が自前で書ける


      ✓ GCにすごく優しい処理系とか
        書ける
      ✓ 言語処理系ひっくるめて検討で
        きる


Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
おいしいところは全部Ruby
         で書ける

      ✓ VM, GC, 全部Rubyで書ける
      ✓ Cみたいに阿鼻叫喚しなくてい
        い(かもしれない)
      ✓ 生産性が100倍(らしい)

Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
勝手に処理系が速くなる感


      ✓ JVM速くなる = Regicide速くな
        る
             ✓ WIN-WIN(笑)
                  ✓ Cでも一緒か…




Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
ほかのGCと比較可能

      ✓ 十数個のGCと性能比較ができ
        る
      ✓ 起動時のオプションを少しいじ
        るだけでOK
             ✓ 論文とかかけるかもしれない!


Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
githubにあげています
  authorNari/regicide
今後の展開
作ってみて気づいたこと


      ✓ GC部分は外っ面がRubyなだけ
        で実はCとあまり変わらない感
        じ…
             ✓ これならCで書いても一緒なのでは…



Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
作ってみて気づいたこと


      ✓ 実はGC実装に特化したミニ言
        語が欲しいだけなのか…?
             ✓ 今後はそちら方面で攻めてみたい




Rubyによる本気のGC - Serious GC with Ruby   Powered by Rabbit 2.0.5
まとめ
まとめ


      ✓ やっぱりRubyの話できなかっ
        た
      ✓ C死ねと思って作ったRegicide
        がすでに死にそう


Rubyによる本気のGC - Serious GC with Ruby         Powered by Rabbit 2.0.5
ご清聴
 ありがとう
ございました
Rubyによる本気のGC

More Related Content

What's hot

minneで学ぶクラウド脳
minneで学ぶクラウド脳minneで学ぶクラウド脳
minneで学ぶクラウド脳Uchio Kondo
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3Masahiro Wakame
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVMKoichi Sakata
 
マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介mametter
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
HashicorpツールズUchio Kondo
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうKoichi Sakata
 
20131208 agile samuraibasecamp
20131208 agile samuraibasecamp20131208 agile samuraibasecamp
20131208 agile samuraibasecampHiroshi SHIBATA
 
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話disc99_
 
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.YASUKAZU NAGATOMI
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまでMugen Fujii
 
Chunked encoding を使った高速化の考察
Chunked encoding を使った高速化の考察Chunked encoding を使った高速化の考察
Chunked encoding を使った高速化の考察Yoshiki Shibukawa
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEWMasahiro Wakame
 
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係yy yank
 

What's hot (17)

minneで学ぶクラウド脳
minneで学ぶクラウド脳minneで学ぶクラウド脳
minneで学ぶクラウド脳
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVM
 
マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介
 
RancherとGitOps的な話
RancherとGitOps的な話RancherとGitOps的な話
RancherとGitOps的な話
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
Introduction pp.js
Introduction pp.jsIntroduction pp.js
Introduction pp.js
 
20131208 agile samuraibasecamp
20131208 agile samuraibasecamp20131208 agile samuraibasecamp
20131208 agile samuraibasecamp
 
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
 
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで
 
Ruby紹介
Ruby紹介Ruby紹介
Ruby紹介
 
Chunked encoding を使った高速化の考察
Chunked encoding を使った高速化の考察Chunked encoding を使った高速化の考察
Chunked encoding を使った高速化の考察
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
 

Viewers also liked

GC本をGCしないための100の方法
GC本をGCしないための100の方法GC本をGCしないための100の方法
GC本をGCしないための100の方法Narihiro Nakamura
 
第七回 渋谷Java - Apache Shiroを使ってみた
第七回 渋谷Java - Apache Shiroを使ってみた第七回 渋谷Java - Apache Shiroを使ってみた
第七回 渋谷Java - Apache Shiroを使ってみたchonaso
 
第九回渋谷Java RaspberryPi+Javaを試してみる
第九回渋谷Java RaspberryPi+Javaを試してみる第九回渋谷Java RaspberryPi+Javaを試してみる
第九回渋谷Java RaspberryPi+Javaを試してみるchonaso
 
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」Narihiro Nakamura
 
Javaのプログラムはどうやって動いているの? GC編
Javaのプログラムはどうやって動いているの? GC編Javaのプログラムはどうやって動いているの? GC編
Javaのプログラムはどうやって動いているの? GC編Yuichi Sakuraba
 
Java hotspot vmに おけるGCの振る舞い
Java hotspot vmにおけるGCの振る舞いJava hotspot vmにおけるGCの振る舞い
Java hotspot vmに おけるGCの振る舞いDi Ai
 
地獄のGC本スピンオフ
地獄のGC本スピンオフ地獄のGC本スピンオフ
地獄のGC本スピンオフNarihiro Nakamura
 
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるわれわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるNarihiro Nakamura
 
円環の理(Garbage Collection)
円環の理(Garbage Collection)円環の理(Garbage Collection)
円環の理(Garbage Collection)Narihiro Nakamura
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GCNarihiro Nakamura
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考えるchonaso
 

Viewers also liked (19)

GC本をGCしないための100の方法
GC本をGCしないための100の方法GC本をGCしないための100の方法
GC本をGCしないための100の方法
 
第七回 渋谷Java - Apache Shiroを使ってみた
第七回 渋谷Java - Apache Shiroを使ってみた第七回 渋谷Java - Apache Shiroを使ってみた
第七回 渋谷Java - Apache Shiroを使ってみた
 
Symbol GC
Symbol GCSymbol GC
Symbol GC
 
第九回渋谷Java RaspberryPi+Javaを試してみる
第九回渋谷Java RaspberryPi+Javaを試してみる第九回渋谷Java RaspberryPi+Javaを試してみる
第九回渋谷Java RaspberryPi+Javaを試してみる
 
GC FAQ
GC FAQGC FAQ
GC FAQ
 
Ruby's GC 20
Ruby's GC 20Ruby's GC 20
Ruby's GC 20
 
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」
 
RUBYLAND
RUBYLANDRUBYLAND
RUBYLAND
 
GC黄金時代
GC黄金時代GC黄金時代
GC黄金時代
 
Fxxking gc.c
Fxxking gc.cFxxking gc.c
Fxxking gc.c
 
Javaのプログラムはどうやって動いているの? GC編
Javaのプログラムはどうやって動いているの? GC編Javaのプログラムはどうやって動いているの? GC編
Javaのプログラムはどうやって動いているの? GC編
 
Java hotspot vmに おけるGCの振る舞い
Java hotspot vmにおけるGCの振る舞いJava hotspot vmにおけるGCの振る舞い
Java hotspot vmに おけるGCの振る舞い
 
地獄のGC本スピンオフ
地獄のGC本スピンオフ地獄のGC本スピンオフ
地獄のGC本スピンオフ
 
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるわれわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできる
 
円環の理(Garbage Collection)
円環の理(Garbage Collection)円環の理(Garbage Collection)
円環の理(Garbage Collection)
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
GCが止まらない
GCが止まらないGCが止まらない
GCが止まらない
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 
Java8勉強会
Java8勉強会Java8勉強会
Java8勉強会
 

Similar to Rubyによる本気のGC

Hacking Ruby with Python
Hacking Ruby with PythonHacking Ruby with Python
Hacking Ruby with PythonTaisuke Yamada
 
Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)fd0
 
RubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフRubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフNarihiro Nakamura
 
GoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスGoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスToshiki Tsuboi
 
GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。dec9ue
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And JekyllYoji Shidara
 
Using or not using magic onion
Using or not using magic onionUsing or not using magic onion
Using or not using magic onionGoichi Shinohara
 
GAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) OpsGAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) OpsMiniascape
 
ghq gem-src and more
ghq  gem-src and moreghq  gem-src and more
ghq gem-src and moreKoichi ITO
 
軽量Ruby『mruby』について
軽量Ruby『mruby』について軽量Ruby『mruby』について
軽量Ruby『mruby』についてRyosuke MATSUMOTO
 
Gc 擬(もどき)を js で書いてみた
Gc 擬(もどき)を js で書いてみた Gc 擬(もどき)を js で書いてみた
Gc 擬(もどき)を js で書いてみた to_ueda
 

Similar to Rubyによる本気のGC (14)

Hacking Ruby with Python
Hacking Ruby with PythonHacking Ruby with Python
Hacking Ruby with Python
 
Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)
 
RubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフRubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフ
 
GoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスGoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティス
 
GR-CITRUSハンズオン
GR-CITRUSハンズオンGR-CITRUSハンズオン
GR-CITRUSハンズオン
 
GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 
Using or not using magic onion
Using or not using magic onionUsing or not using magic onion
Using or not using magic onion
 
GAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) OpsGAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) Ops
 
Scalaで実装するGC
Scalaで実装するGCScalaで実装するGC
Scalaで実装するGC
 
ghq gem-src and more
ghq  gem-src and moreghq  gem-src and more
ghq gem-src and more
 
軽量Ruby『mruby』について
軽量Ruby『mruby』について軽量Ruby『mruby』について
軽量Ruby『mruby』について
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
Gc 擬(もどき)を js で書いてみた
Gc 擬(もどき)を js で書いてみた Gc 擬(もどき)を js で書いてみた
Gc 擬(もどき)を js で書いてみた
 

More from Narihiro Nakamura

桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、RubyやめるってよNarihiro Nakamura
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GCNarihiro Nakamura
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることNarihiro Nakamura
 
GC生誕50周年を祝って
GC生誕50周年を祝ってGC生誕50周年を祝って
GC生誕50周年を祝ってNarihiro Nakamura
 
シャイなRubyistにできること
シャイなRubyistにできることシャイなRubyistにできること
シャイなRubyistにできることNarihiro Nakamura
 
Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会Narihiro Nakamura
 
Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Narihiro Nakamura
 
本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_objectNarihiro Nakamura
 
Talk In Point Of Gc Once In While
Talk In Point Of Gc Once In WhileTalk In Point Of Gc Once In While
Talk In Point Of Gc Once In WhileNarihiro Nakamura
 
Rubyはゲームの夢を見るか
Rubyはゲームの夢を見るかRubyはゲームの夢を見るか
Rubyはゲームの夢を見るかNarihiro Nakamura
 

More from Narihiro Nakamura (13)

桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできること
 
GC生誕50周年を祝って
GC生誕50周年を祝ってGC生誕50周年を祝って
GC生誕50周年を祝って
 
シャイなRubyistにできること
シャイなRubyistにできることシャイなRubyistにできること
シャイなRubyistにできること
 
Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会
 
Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会
 
絶対復習について
絶対復習について絶対復習について
絶対復習について
 
AlgorithmDesign01
AlgorithmDesign01AlgorithmDesign01
AlgorithmDesign01
 
make of MiniGC
make of MiniGCmake of MiniGC
make of MiniGC
 
本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object
 
Talk In Point Of Gc Once In While
Talk In Point Of Gc Once In WhileTalk In Point Of Gc Once In While
Talk In Point Of Gc Once In While
 
Rubyはゲームの夢を見るか
Rubyはゲームの夢を見るかRubyはゲームの夢を見るか
Rubyはゲームの夢を見るか
 

Rubyによる本気のGC