SlideShare ist ein Scribd-Unternehmen logo
1 von 203
Downloaden Sie, um offline zu lesen
GC本のツクリカタ
                                      Making of the GC book

                                         nari/中村 成洋
                                    ネットワーク応用通信研究所

GC本のツクリカタ - Making of the GC book                    Powered by Rabbit 0.6.4
自己紹介
自己紹介


       ✓ nari/中村 成洋です
       ✓ 福岡生まれ、島根在住
       ✓ NaCl勤務


                                                    2/202
GC本のツクリカタ - Making of the GC book          Powered by Rabbit 0.6.4
自己紹介


       ✓ GC歴 3.5年(駆け出し)
       ✓ アイス工場歴 3年
              ✓ 大体一緒くらい



                                                    3/202
GC本のツクリカタ - Making of the GC book          Powered by Rabbit 0.6.4
アンケート
GC本を持っている人?
     ノシ
おお…
サインします!!
全部読んだ人?
  ノシ
なんと…
今日お話しする内容!!
注:GC本の内容自体には
  あまり触れません
(が、読んでおかないと分か
  らない箇所もありそう)
今日話すこと
GC本に習って二部構成に
    しました
今日話すこと


       ✓ ノーマル編
       ✓ ガチムチ編


                                                    15/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
今日話すこと


       ✓ ノーマル編
              ✓ GC本のツクリカタ

       ✓ ガチムチ編


                                                    16/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
今日話すこと


       ✓ ノーマル編
              ✓ GC本のツクリカタ

       ✓ ガチムチ編


                                                    17/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
ノーマル編
GC本のツクリカタ
相川(共著者)さんとの
    出会い
3年前、突然のメール
内容

       ✓ 大卒の論文でGCのWikiを参考に
         したそう
              ✓ GCで有名な京都の方にある研究室(Y
                研)

       ✓ GCLover同士の出会い

                                                22/202
GC本のツクリカタ - Making of the GC book        Powered by Rabbit 0.6.4
その後

       ✓ 院でRubyのGCを研究
       ✓ 相川さんが笹田さんにお世話にな
         る
       ✓ 回り回ってまたお知り合いに

                                                 23/202
GC本のツクリカタ - Making of the GC book         Powered by Rabbit 0.6.4
GC勉強会

       ✓ 毎週Skypeで「GC勉強会」
       ✓ GCの論文の話しとか
       ✓ このとき「G1GC」を題材にしたが
         理解できず

                                                   24/202
GC本のツクリカタ - Making of the GC book           Powered by Rabbit 0.6.4
共著のお願い
nari「一緒に書きません
      か?」
aikawa「修論が…」
死亡フラグktkr!
卒業できて良かった
  (つд⊂)エーン
竹内先生(監修者)との出
     会い
相川さん=>笹田研=>竹内研

       ✓ よく分からないけどこんな感じで
         お願いできた
       ✓ 退官される忙しい時期にお願い
       ✓ 快く了承してもらう

                                           31/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
すべての原稿をレビュー

       ✓ 特にアルゴリズム編はよく読んで
         いただいた
       ✓ 多くの原稿は電車の中で読まれ
         たそう

                                           32/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
ドラクエ7問題

       ✓ ドラクエ7がレビュー時期に発売
       ✓ 竹内先生はドラクエが好き
       ✓ 電車の中でプレイ可能な
         NintendoDS

                                                     33/202
GC本のツクリカタ - Making of the GC book             Powered by Rabbit 0.6.4
あとは言わなくても
 分かりますよね!
とはいえ遅れなく


       ✓ さまざま指摘を頂いた
       ✓ 優しくも厳しい、絶妙
       ✓ レビュー結果は真鵺道にて記述


                                              35/202
GC本のツクリカタ - Making of the GC book      Powered by Rabbit 0.6.4
とっても勉強なりました
最終講義でも「GC本」紹介
 してもらいました(;-;)
まつもとさん
(Ruby作者兼帯職人)
    との出会い
会社の飲み会終わりに
nari「今度、GCの本を書く
    ことになりました」
matz「おお、すごい」
nari「GC本の帯をお願いし
    たいのですが…」
matz「いいよー」
nari「(´;ω;`)ブワッ」
素晴らしい帯

                         古(いにしえ)からの魔
                         法、ガベージコレクショ
                         ンの秘密を完全解説
           [「ガベージコレクションのアルゴリズムと実装 − 帯」より
                                     引用]


                                                    45/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
その他にもさまざまな出会い

       ✓ 編集者さん
       ✓ レビューアのみなさん
       ✓ Evan Phoenix
       ✓ 読書会を開いてくれる&来てくれ
         るみなさん
                                           46/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
出会いの中心にあった『GC
     本』
最初は苦難の道のり
GC本構想時の反応
GC本出すよ!


       ✓ 誰得ですか?
       ✓ 私は買いますが、他に誰か買いま
         すか?


                                                     50/202
GC本のツクリカタ - Making of the GC book             Powered by Rabbit 0.6.4
( ´∀`)つ□ 涙拭けよ
GC本の企画自体も通るか微妙
       ✓ 編集者さんの力でなんとかしても
         らった
       ✓ 「先見の明」がある
       ✓ 「本ではなく、人を売り出したい」
       ✓ 「本は出してみないと結果がわか
         らない」
                                           52/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
が、おかげさまで好評です。
  感謝感謝m(_ _)m
なぜここまで好評であった
     か?
たぶん「2つの問題」を
 解決しているから
2つの問題とは?
問題点(1)
「若者のGC離れ」
  が深刻化
ある懇親会での出来事
学生さん「GCに興味がある
    んですよ」
nari「はいはい」
学生さん「GCってどうなっ
  てるんですか?」
nari「えーと、まずルートとい
      うものが…」
…
また、違う懇親会で
学生さん「GCに興味がある
     んです」
nari「えぇえぇ」
学生さん「コピーGCって保
 守的GCなんですか?」
nari「えーと、まずルートとい
      うものが…」
…
これは疲れる!
なぜ知らないのか?
原因

       ✓ 日本語でGCについて詳細に書か
         れた本がない
              ✓ 英語の本はある(RJGC)

       ✓ アルゴリズムは知っていてもイマ
         イチ実装と結びついてない

                                                73/202
GC本のツクリカタ - Making of the GC book        Powered by Rabbit 0.6.4
では、どうすればよいか?
解決策
日本語のGC本を書く!
思い描いたGC本の構想
アルゴリズム 3 : 実装 7
理由


       ✓ 単純にアルゴリズムを使用する
         ケースは少ない
       ✓ RJGCと違うものを


                                                79/202
GC本のツクリカタ - Making of the GC book        Powered by Rabbit 0.6.4
理由

       ✓ いろんな言語処理系のGC実装を
         紹介した本は世界的にない
       ✓ アルゴリズムはGCの一面でしか
         ない(実装ありき)

                                                80/202
GC本のツクリカタ - Making of the GC book        Powered by Rabbit 0.6.4
問題の解決は?

       ✓ 知識の底上げはできた(気がす
         る)
              ✓ すくなくとも「GC本読んでください」と
                言える!

       ✓ GCを実装する人が増えてくれ
         る…といいなぁ
                                               81/202
GC本のツクリカタ - Making of the GC book       Powered by Rabbit 0.6.4
問題点(2)
初心者向けの
本が多すぎる
見渡せば入門書ばかり


       ✓ 初めてのXX
       ✓ XX入門


                                           84/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
もちろん入門書は欲しいけ
      ど
重複した入門書は欲しくな
     い
私はもっとガチな本が読み
     たい!
我々が愛したガチ本

       ✓ RHG(Rubyソースコード完全解
         説)
       ✓ ハッカーの楽しみ
       ✓ Java仮想マシン仕様書
       ✓ etc..
                                           88/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
解決策
ガチな本を書こう!
GC本の構成


       ✓ アルゴリズム編
       ✓ 実装編


                                                    91/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
こういう構成はあまりない
 


    http://twitter.com/kinaba/status/10027309487
本を書くときのポリシー
逃げない
ごまかさない
具体的には


       ✓ いろんな言語処理系を読んだ
              ✓ 言語処理系によってGCはさまざま
              ✓ しんどかった…



                                                   97/202
GC本のツクリカタ - Making of the GC book           Powered by Rabbit 0.6.4
具体的には

       ✓ なぜこの実装を書いたのか?とい
         う点を追求
       ✓ 泥臭い実装も説明
              ✓ DalvikVMとかどうしようと思った。泣け
                た。


                                                   98/202
GC本のツクリカタ - Making of the GC book           Powered by Rabbit 0.6.4
 


    http://twitter.com/miura1729/status/10082548659
おかげでガチな内容になっ
   たと思います
    m(_ _)m
ノーマル編:まとめ
ノーマル編:まとめ
       ✓ GC本で2つの問題を解決
       ✓ GCを知らないけど興味がある人
         に知識を提供
       ✓ 悶々としている人にガチな本を提
         供
              ✓ マニアックな本でも売れた!! :)
                                            102/202
GC本のツクリカタ - Making of the GC book      Powered by Rabbit 0.6.4
今日話すこと


       ✓ ノーマル編
       ✓ ガチムチ編


                                                  103/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
今日話すこと

       ✓ ノーマル編
       ✓ ガチムチ編
              ✓ GCの実装を読むコツ
              ✓ GCバッドノウハウ集
              ✓ まぼろしの目次案

                                                  104/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
ガチムチ編
GCの実装を読むコツ
誰得…orz
GCを読む前の準備
前準備(1)


       ✓ Emacsを使う
              ✓ Emacs!Emacs!!!!
              ✓ Emacs!Emacs!!!!



                                                  109/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
前準備(2)



       ✓ GCのアルゴリズムを把握



                                                  110/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
前準備(3):3つの「g」
       ✓ gdb
              ✓ 言語処理系自体を動かせる状態に

       ✓ gtags
              ✓ 関数の呼び出し箇所を発見できる

       ✓ git
              ✓ git grep!!
                                           111/202
GC本のツクリカタ - Making of the GC book     Powered by Rabbit 0.6.4
すべてEmacs上で使う
前準備(4)


       ✓ 行数を数えて落ち着く
              ✓ 言語処理系全体行数、GC行数を見る




                                                  113/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
準備後は
こんな順番で読んでいく


          1. データ構造
          2. ヒープ構造&アロケータ
          3. GC


                                         115/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
GC三角関係




                                                  116/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
データ構造


       ✓ オブジェクトがどのような構成に
         なっているか?
       ✓ ヘッダはどうなってる?


                                                 117/202
GC本のツクリカタ - Making of the GC book           Powered by Rabbit 0.6.4
ヒープ&アロケータ

       ✓ GCと密接に関係
       ✓ GCを切り替えるときはヒープの構
         造も切り替わることが多い
       ✓ それにともなってアロケータも変わ
         る

                                          118/202
GC本のツクリカタ - Making of the GC book    Powered by Rabbit 0.6.4
GC


       ✓ 今までで雰囲気を掴んでいるはず
       ✓ GCアルゴリズムをイメージしなが
         ら


                                              119/202
GC本のツクリカタ - Making of the GC book        Powered by Rabbit 0.6.4
まとめ
GC三角関係を意識し
適切な順に読んでいくのが
     大事
今日話すこと

       ✓ ノーマル編
       ✓ ガチムチ編
              ✓ GCの実装を読むコツ
              ✓ GCバッドノウハウ集
              ✓ まぼろしの目次案

                                                  122/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
GCバッドノウハウ集
2つだけ


          1. GCの臭い
          2. 謎の0xAB


                                                124/202
GC本のツクリカタ - Making of the GC book          Powered by Rabbit 0.6.4
1. GCの臭い
よくあること
「GCに関連する処理を見つ
     けたいっ!」
「Don't think, FEEL!」
ファイル名から嗅ぎ分ける

       ✓ object.h => データ構造が!!
       ✓ alloc.c => アロケータ!!
       ✓ heap.c => ヒープ!!
       ✓ mark_sweep.c => GC!!

                                         129/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
grepで見つける

       ✓ gcでgrep => 大抵見つかる
       ✓ garbage collectionでgrep
       ✓ garbage collectorでgrep
       ✓ アルゴリズム名でgrep

                                                130/202
GC本のツクリカタ - Making of the GC book          Powered by Rabbit 0.6.4
2. 謎の0xAB
オブジェクトを割り当て




                                         132/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
前後に謎の0xAB




                                             133/202
GC本のツクリカタ - Making of the GC book       Powered by Rabbit 0.6.4
ナニコレ?




                                                 134/202
GC本のツクリカタ - Making of the GC book           Powered by Rabbit 0.6.4
ヒント


       ✓ デバッグ時のみしか使わない
       ✓ メモリ系のバグは死ねる


                                               135/202
GC本のツクリカタ - Making of the GC book         Powered by Rabbit 0.6.4
分かる人いますか?
答え
メモリ破壊を検知するため
0xABの正体

       ✓ delete時(C++)に0xABをチェック
       ✓ 0xABのままならOK!
       ✓ 書き換わってたらメモリ破壊が
         あった!

                                                   139/202
GC本のツクリカタ - Making of the GC book             Powered by Rabbit 0.6.4
メモリ破壊系のバグはしんどい

       ✓ どこで書き換わったか見つけるの
         が難しい
       ✓ gdbのwatchとか使う?
       ✓ 良い方法があれば教えてください
         ><

                                         140/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
その他、気づいた所は本に
    書きました
今日話すこと

       ✓ ノーマル編
       ✓ ガチムチ編
              ✓ GCの実装を読むコツ
              ✓ GCバッドノウハウ集
              ✓ まぼろしの目次案

                                                  142/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
まぼろしの目次案
アルゴリズム編で抜けた章


       ✓ 並列GC
       ✓ 並行GC


                                         144/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
実装編で抜けた章


       ✓ HotspotVMのGC
       ✓ GCを作ってみよう!


                                          145/202
GC本のツクリカタ - Making of the GC book    Powered by Rabbit 0.6.4
紹介する予定だったアルゴリズ
          ム

       ✓ TreadmillGC
       ✓ MappingCollector
       ✓ etc...

                                         146/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
HotspotVM(OpenJDK7)


       ✓ 2ヶ月くらい掛けていた!!
       ✓ 50ページくらい書いていた!!
       ✓ タイムオーバー…orz

                                         147/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
なのでこの場を借りて説明
    します><
正確なGCへの道:
 HotspotVM編
HotspotVM


       ✓ スタックマシン
              ✓ スタックマシンとは(ry




                                                     150/202
GC本のツクリカタ - Making of the GC book               Powered by Rabbit 0.6.4
JVMスタック




       ✓ メソッド呼び出し時にフレームを積
         む
                                                   151/202
GC本のツクリカタ - Making of the GC book             Powered by Rabbit 0.6.4
ポインタと即値の区別

       ✓ プリミティブ型はJVMの中でも数
         値として扱っている
       ✓ プリミティブ型の値がフレーム内
         に混ざってしまう
       ✓ 区別しなければ保守的GCとなる

                                         152/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
ポインタと即値の区別

       ✓ フレーム内
       ✓ ローカル変数配列
       ✓ オペランドスタック
       ✓ 即値? ポインタ? わからん…

                                         153/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
どうするか?
「参照マップ」の作成
HotspotVM実行フロー

       ✓ .java => .class
       ✓ .classはJavaバイトコードの固まり
       ✓ VMはバイトコードの命令セットを1
         つずつ実行

                                         156/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
抽象的インタプリタ
       ✓ 実体はないけど型情報だけで実
         行しちゃおう
              ✓1 + 1 = 2
              ✓ => int + int = int

       ✓ ローカル変数配列、スタック内に
         入る型情報を記録
              ✓ => 参照マップ
                                          157/202
GC本のツクリカタ - Making of the GC book    Powered by Rabbit 0.6.4
どういうものか実際に見て
    みましょう
とあるソースコード


           class TwoDifferentLocalVars {
              public static void main(String args[]){
                int primitiveType = 1;           // プリミティブ型
                Object referenceType = new Object(); // 参照型(ポインタ)
              }
           }




                                                                  159/202
GC本のツクリカタ - Making of the GC book                            Powered by Rabbit 0.6.4
Javaバイトコードが
透けて見えますよね
こうなる


            pc( 0): iconst_1
            pc( 1): istore_1
            pc( 2): new       #2 // class java/lang/Object
            pc( 5): dup
            pc( 6): invokespecial #1 // Method java/lang/Object."<init>"
            pc( 9): astore_2
            pc(10): return



                                                                         161/202
GC本のツクリカタ - Making of the GC book                                   Powered by Rabbit 0.6.4
pc( 0)=>pc( 1)

            // int primitiveType = 1;
            pc( 0): locals = 'r..', stack = '' // iconst_1
            // iconst_'i' :
            // 'i'の部分にあたるintの定数をオペランドスタックに積む
            pc( 1): locals = 'r..', stack = 'v'


    ✓ reference : 参照型(ポインタ)、
      value : プリミティブ型
                                                           162/202
GC本のツクリカタ - Making of the GC book                     Powered by Rabbit 0.6.4
pc( 1)=>pc( 2)


           // int primitiveType = 1;
           pc( 1): locals = 'r..', stack = 'v' // istore_1
           // istore_'n' :
           // ローカル変数配列の'n'番目に
           // オペランドスタックの先頭のint型の値を格納する
           pc( 2): locals = 'rv.', stack = ''


                                                           163/202
GC本のツクリカタ - Making of the GC book                     Powered by Rabbit 0.6.4
pc( 2)=>pc( 5)


           // Object referenceType = new Object();
           pc( 2): locals = 'rv.', stack = '' // new #2
           // new :
           // 新たなオブジェクトを生成し、オペランドスタックに積む
           pc( 5): locals = 'rv.', stack = 'r'




                                                          164/202
GC本のツクリカタ - Making of the GC book                    Powered by Rabbit 0.6.4
ちょっと飛ばして
pc( 9)=>pc( 10)


            // Object referenceType = new Object();
            pc( 9): locals = 'rv.', stack = 'r' // astore_2
            // astore_'n' :
            // ローカル変数配列の'n'番目にオペランドスタックの
            // 先頭の参照型の値を格納する
            pc(10): locals = 'rvr', stack = ''



                                                             166/202
GC本のツクリカタ - Making of the GC book                       Powered by Rabbit 0.6.4
参照マップ

       ✓ 一命令毎のJVMフレームの情報
         を持つ
              ✓ 現在JVMスタックに積まれているフレー
                ム全て

       ✓ 情報 => 「参照型」「プリミティブ
         型」を区別する地図
                                                 167/202
GC本のツクリカタ - Making of the GC book           Powered by Rabbit 0.6.4
なぜローカル変数配列に
  マップが必要?
グローバル変数、クラス変数等
          の場合


       ✓ グローバル変数、クラス変数等
              ✓ 型情報によってコンパイル時に区別可
                能


                                         169/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
ローカル変数配列の場合


       ✓ フレーム内のローカル変数
              ✓ ローカル変数配列の内容は実行時に
                決まる



                                         170/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
駄目なケース

            if (条件) {
               Object referenceType = new Object();
            } else {
               int primitiveType = 1;
            }

    ✓ 条件によってローカル変数配列内
      の情報が変化
                                                     171/202
GC本のツクリカタ - Making of the GC book               Powered by Rabbit 0.6.4
続いて
G1GC
G1GCとは

       ✓ OpenJDK7に入ってる
       ✓ Garbage-First Garbage Collection
       ✓ サーバタイプ
              ✓ 大容量のメモリ使う
              ✓ 停止時間を気にする

                                                  174/202
GC本のツクリカタ - Making of the GC book            Powered by Rabbit 0.6.4
概要


       ✓ Javaヒープを「リージョン」単位に
         分割
       ✓ トレインGCに似ている


                                              175/202
GC本のツクリカタ - Making of the GC book        Powered by Rabbit 0.6.4
従来のCMS(Cuncurrent 
  Mark Sweep)
 


http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
 


http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
G1GC
 


http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
 


http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
 


http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
G1GCの特徴

       ✓ 並行GC
              ✓ 並列でできることは並列化(凄い)

       ✓ リージョン内のゴミ割合が分かる
       ✓ 停止時間が予測可能

                                                   183/202
GC本のツクリカタ - Making of the GC book             Powered by Rabbit 0.6.4
リージョン内のゴミ割合が
    分かる?
リージョン毎の記憶集合




                                         185/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
記憶集合


       ✓ 記憶集合からゴミが割り出せる
       ✓ ゴミが多いリージョンがわかる


                                                186/202
GC本のツクリカタ - Making of the GC book          Powered by Rabbit 0.6.4
Garbage-First




       ✓ ゴミが多いリージョンを優先的に
         GC
                                                         187/202
GC本のツクリカタ - Making of the GC book                   Powered by Rabbit 0.6.4
賢い
停止時間が予測可能?
ゴミの割合がわかるということ
            は
       ✓ 一つのリージョンにかかるGC時間
         もわかるはず
       ✓ マシンパワーに依存する計算時間
         も加味
              ✓ GC時に実際に計測して予測精度を高
                める
                                         190/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
停止時間の設定

       ✓ ユーザが「これくらいの停止時間
         で!」というのを設定できる
       ✓ それを越えないようにGC対象の
         リージョンを選択

                                            191/202
GC本のツクリカタ - Making of the GC book      Powered by Rabbit 0.6.4
「あなたが予測可能な範囲
   で止まりますよ!」
    という割り切り
かなり賢い
参考文献
       ✓ JavaOneの発表資料
              ✓ http://developers.sun.com/learning/
                javaoneonline/2008/pdf/TS-5419.pdf

       ✓ 論文
              ✓ URL忘れたけど公開してた
              ✓ 注:発狂するほど難しい
                                                      194/202
GC本のツクリカタ - Making of the GC book                Powered by Rabbit 0.6.4
せっかく
                 ここまでがんばったので

       ✓ 「実装編:HotspotVMのGC」章を
         出したいなあ
       ✓ 電子書籍?
              ✓ まだわかりません><

                                         195/202
GC本のツクリカタ - Making of the GC book   Powered by Rabbit 0.6.4
まとめ
まとめ

       ✓ HotspotVMは大変だった
       ✓ G1GCの論文も大変
              ✓ 俺の正月…どこいってしもたん…?

       ✓ 目次案は皮算用しない!

                                               197/202
GC本のツクリカタ - Making of the GC book         Powered by Rabbit 0.6.4
今回発表でいいたかった
たった一つのこと
なんやかんやで
 GCカワイイ!
ご静聴
ありがとうございました。
質疑応答
(GC本の内容に関すること
     でも可)

Weitere ähnliche Inhalte

Mehr von 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
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GCNarihiro Nakamura
 
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」Narihiro Nakamura
 
円環の理(Garbage Collection)
円環の理(Garbage Collection)円環の理(Garbage Collection)
円環の理(Garbage Collection)Narihiro Nakamura
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることNarihiro Nakamura
 
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるわれわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできる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
 
RubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフRubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフNarihiro Nakamura
 
本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_objectNarihiro Nakamura
 

Mehr von Narihiro Nakamura (20)

RUBYLAND
RUBYLANDRUBYLAND
RUBYLAND
 
Fxxking gc.c
Fxxking gc.cFxxking gc.c
Fxxking gc.c
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
GC FAQ
GC FAQGC FAQ
GC FAQ
 
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」
 
円環の理(Garbage Collection)
円環の理(Garbage Collection)円環の理(Garbage Collection)
円環の理(Garbage Collection)
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできること
 
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるわれわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできる
 
GCが止まらない
GCが止まらないGCが止まらない
GCが止まらない
 
GC生誕50周年を祝って
GC生誕50周年を祝ってGC生誕50周年を祝って
GC生誕50周年を祝って
 
シャイなRubyistにできること
シャイなRubyistにできることシャイなRubyistにできること
シャイなRubyistにできること
 
Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会
 
GC黄金時代
GC黄金時代GC黄金時代
GC黄金時代
 
Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会
 
RubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフRubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフ
 
絶対復習について
絶対復習について絶対復習について
絶対復習について
 
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
 

Kürzlich hochgeladen

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Kürzlich hochgeladen (10)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

GC本のツクリカタ