GC本のツクリカタ

2,937 views

Published on

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,937
On SlideShare
0
From Embeds
0
Number of Embeds
50
Actions
Shares
0
Downloads
21
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

GC本のツクリカタ

  1. 1. GC本のツクリカタ Making of the GC book nari/中村 成洋 ネットワーク応用通信研究所 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  2. 2. 自己紹介
  3. 3. 自己紹介 ✓ nari/中村 成洋です ✓ 福岡生まれ、島根在住 ✓ NaCl勤務 2/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  4. 4. 自己紹介 ✓ GC歴 3.5年(駆け出し) ✓ アイス工場歴 3年 ✓ 大体一緒くらい 3/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  5. 5. アンケート
  6. 6. GC本を持っている人? ノシ
  7. 7. おお…
  8. 8. サインします!!
  9. 9. 全部読んだ人? ノシ
  10. 10. なんと…
  11. 11. 今日お話しする内容!!
  12. 12. 注:GC本の内容自体には あまり触れません
  13. 13. (が、読んでおかないと分か らない箇所もありそう)
  14. 14. 今日話すこと
  15. 15. GC本に習って二部構成に しました
  16. 16. 今日話すこと ✓ ノーマル編 ✓ ガチムチ編 15/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  17. 17. 今日話すこと ✓ ノーマル編 ✓ GC本のツクリカタ ✓ ガチムチ編 16/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  18. 18. 今日話すこと ✓ ノーマル編 ✓ GC本のツクリカタ ✓ ガチムチ編 17/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  19. 19. ノーマル編
  20. 20. GC本のツクリカタ
  21. 21. 相川(共著者)さんとの 出会い
  22. 22. 3年前、突然のメール
  23. 23. 内容 ✓ 大卒の論文でGCのWikiを参考に したそう ✓ GCで有名な京都の方にある研究室(Y 研) ✓ GCLover同士の出会い 22/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  24. 24. その後 ✓ 院でRubyのGCを研究 ✓ 相川さんが笹田さんにお世話にな る ✓ 回り回ってまたお知り合いに 23/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  25. 25. GC勉強会 ✓ 毎週Skypeで「GC勉強会」 ✓ GCの論文の話しとか ✓ このとき「G1GC」を題材にしたが 理解できず 24/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  26. 26. 共著のお願い
  27. 27. nari「一緒に書きません か?」
  28. 28. aikawa「修論が…」
  29. 29. 死亡フラグktkr!
  30. 30. 卒業できて良かった (つд⊂)エーン
  31. 31. 竹内先生(監修者)との出 会い
  32. 32. 相川さん=>笹田研=>竹内研 ✓ よく分からないけどこんな感じで お願いできた ✓ 退官される忙しい時期にお願い ✓ 快く了承してもらう 31/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  33. 33. すべての原稿をレビュー ✓ 特にアルゴリズム編はよく読んで いただいた ✓ 多くの原稿は電車の中で読まれ たそう 32/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  34. 34. ドラクエ7問題 ✓ ドラクエ7がレビュー時期に発売 ✓ 竹内先生はドラクエが好き ✓ 電車の中でプレイ可能な NintendoDS 33/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  35. 35. あとは言わなくても 分かりますよね!
  36. 36. とはいえ遅れなく ✓ さまざま指摘を頂いた ✓ 優しくも厳しい、絶妙 ✓ レビュー結果は真鵺道にて記述 35/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  37. 37. とっても勉強なりました
  38. 38. 最終講義でも「GC本」紹介 してもらいました(;-;)
  39. 39. まつもとさん (Ruby作者兼帯職人) との出会い
  40. 40. 会社の飲み会終わりに
  41. 41. nari「今度、GCの本を書く ことになりました」
  42. 42. matz「おお、すごい」
  43. 43. nari「GC本の帯をお願いし たいのですが…」
  44. 44. matz「いいよー」
  45. 45. nari「(´;ω;`)ブワッ」
  46. 46. 素晴らしい帯 古(いにしえ)からの魔 法、ガベージコレクショ ンの秘密を完全解説 [「ガベージコレクションのアルゴリズムと実装 − 帯」より 引用] 45/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  47. 47. その他にもさまざまな出会い ✓ 編集者さん ✓ レビューアのみなさん ✓ Evan Phoenix ✓ 読書会を開いてくれる&来てくれ るみなさん 46/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  48. 48. 出会いの中心にあった『GC 本』
  49. 49. 最初は苦難の道のり
  50. 50. GC本構想時の反応
  51. 51. GC本出すよ! ✓ 誰得ですか? ✓ 私は買いますが、他に誰か買いま すか? 50/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  52. 52. ( ´∀`)つ□ 涙拭けよ
  53. 53. GC本の企画自体も通るか微妙 ✓ 編集者さんの力でなんとかしても らった ✓ 「先見の明」がある ✓ 「本ではなく、人を売り出したい」 ✓ 「本は出してみないと結果がわか らない」 52/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  54. 54. が、おかげさまで好評です。 感謝感謝m(_ _)m
  55. 55. なぜここまで好評であった か?
  56. 56. たぶん「2つの問題」を 解決しているから
  57. 57. 2つの問題とは?
  58. 58. 問題点(1)
  59. 59. 「若者のGC離れ」 が深刻化
  60. 60. ある懇親会での出来事
  61. 61. 学生さん「GCに興味がある んですよ」
  62. 62. nari「はいはい」
  63. 63. 学生さん「GCってどうなっ てるんですか?」
  64. 64. nari「えーと、まずルートとい うものが…」
  65. 65.
  66. 66. また、違う懇親会で
  67. 67. 学生さん「GCに興味がある んです」
  68. 68. nari「えぇえぇ」
  69. 69. 学生さん「コピーGCって保 守的GCなんですか?」
  70. 70. nari「えーと、まずルートとい うものが…」
  71. 71.
  72. 72. これは疲れる!
  73. 73. なぜ知らないのか?
  74. 74. 原因 ✓ 日本語でGCについて詳細に書か れた本がない ✓ 英語の本はある(RJGC) ✓ アルゴリズムは知っていてもイマ イチ実装と結びついてない 73/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  75. 75. では、どうすればよいか?
  76. 76. 解決策
  77. 77. 日本語のGC本を書く!
  78. 78. 思い描いたGC本の構想
  79. 79. アルゴリズム 3 : 実装 7
  80. 80. 理由 ✓ 単純にアルゴリズムを使用する ケースは少ない ✓ RJGCと違うものを 79/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  81. 81. 理由 ✓ いろんな言語処理系のGC実装を 紹介した本は世界的にない ✓ アルゴリズムはGCの一面でしか ない(実装ありき) 80/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  82. 82. 問題の解決は? ✓ 知識の底上げはできた(気がす る) ✓ すくなくとも「GC本読んでください」と 言える! ✓ GCを実装する人が増えてくれ る…といいなぁ 81/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  83. 83. 問題点(2)
  84. 84. 初心者向けの 本が多すぎる
  85. 85. 見渡せば入門書ばかり ✓ 初めてのXX ✓ XX入門 84/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  86. 86. もちろん入門書は欲しいけ ど
  87. 87. 重複した入門書は欲しくな い
  88. 88. 私はもっとガチな本が読み たい!
  89. 89. 我々が愛したガチ本 ✓ RHG(Rubyソースコード完全解 説) ✓ ハッカーの楽しみ ✓ Java仮想マシン仕様書 ✓ etc.. 88/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  90. 90. 解決策
  91. 91. ガチな本を書こう!
  92. 92. GC本の構成 ✓ アルゴリズム編 ✓ 実装編 91/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  93. 93. こういう構成はあまりない
  94. 94.   http://twitter.com/kinaba/status/10027309487
  95. 95. 本を書くときのポリシー
  96. 96. 逃げない
  97. 97. ごまかさない
  98. 98. 具体的には ✓ いろんな言語処理系を読んだ ✓ 言語処理系によってGCはさまざま ✓ しんどかった… 97/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  99. 99. 具体的には ✓ なぜこの実装を書いたのか?とい う点を追求 ✓ 泥臭い実装も説明 ✓ DalvikVMとかどうしようと思った。泣け た。 98/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  100. 100.   http://twitter.com/miura1729/status/10082548659
  101. 101. おかげでガチな内容になっ たと思います m(_ _)m
  102. 102. ノーマル編:まとめ
  103. 103. ノーマル編:まとめ ✓ GC本で2つの問題を解決 ✓ GCを知らないけど興味がある人 に知識を提供 ✓ 悶々としている人にガチな本を提 供 ✓ マニアックな本でも売れた!! :) 102/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  104. 104. 今日話すこと ✓ ノーマル編 ✓ ガチムチ編 103/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  105. 105. 今日話すこと ✓ ノーマル編 ✓ ガチムチ編 ✓ GCの実装を読むコツ ✓ GCバッドノウハウ集 ✓ まぼろしの目次案 104/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  106. 106. ガチムチ編
  107. 107. GCの実装を読むコツ
  108. 108. 誰得…orz
  109. 109. GCを読む前の準備
  110. 110. 前準備(1) ✓ Emacsを使う ✓ Emacs!Emacs!!!! ✓ Emacs!Emacs!!!! 109/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  111. 111. 前準備(2) ✓ GCのアルゴリズムを把握 110/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  112. 112. 前準備(3):3つの「g」 ✓ gdb ✓ 言語処理系自体を動かせる状態に ✓ gtags ✓ 関数の呼び出し箇所を発見できる ✓ git ✓ git grep!! 111/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  113. 113. すべてEmacs上で使う
  114. 114. 前準備(4) ✓ 行数を数えて落ち着く ✓ 言語処理系全体行数、GC行数を見る 113/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  115. 115. 準備後は
  116. 116. こんな順番で読んでいく 1. データ構造 2. ヒープ構造&アロケータ 3. GC 115/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  117. 117. GC三角関係 116/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  118. 118. データ構造 ✓ オブジェクトがどのような構成に なっているか? ✓ ヘッダはどうなってる? 117/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  119. 119. ヒープ&アロケータ ✓ GCと密接に関係 ✓ GCを切り替えるときはヒープの構 造も切り替わることが多い ✓ それにともなってアロケータも変わ る 118/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  120. 120. GC ✓ 今までで雰囲気を掴んでいるはず ✓ GCアルゴリズムをイメージしなが ら 119/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  121. 121. まとめ
  122. 122. GC三角関係を意識し 適切な順に読んでいくのが 大事
  123. 123. 今日話すこと ✓ ノーマル編 ✓ ガチムチ編 ✓ GCの実装を読むコツ ✓ GCバッドノウハウ集 ✓ まぼろしの目次案 122/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  124. 124. GCバッドノウハウ集
  125. 125. 2つだけ 1. GCの臭い 2. 謎の0xAB 124/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  126. 126. 1. GCの臭い
  127. 127. よくあること
  128. 128. 「GCに関連する処理を見つ けたいっ!」
  129. 129. 「Don't think, FEEL!」
  130. 130. ファイル名から嗅ぎ分ける ✓ object.h => データ構造が!! ✓ alloc.c => アロケータ!! ✓ heap.c => ヒープ!! ✓ mark_sweep.c => GC!! 129/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  131. 131. grepで見つける ✓ gcでgrep => 大抵見つかる ✓ garbage collectionでgrep ✓ garbage collectorでgrep ✓ アルゴリズム名でgrep 130/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  132. 132. 2. 謎の0xAB
  133. 133. オブジェクトを割り当て 132/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  134. 134. 前後に謎の0xAB 133/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  135. 135. ナニコレ? 134/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  136. 136. ヒント ✓ デバッグ時のみしか使わない ✓ メモリ系のバグは死ねる 135/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  137. 137. 分かる人いますか?
  138. 138. 答え
  139. 139. メモリ破壊を検知するため
  140. 140. 0xABの正体 ✓ delete時(C++)に0xABをチェック ✓ 0xABのままならOK! ✓ 書き換わってたらメモリ破壊が あった! 139/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  141. 141. メモリ破壊系のバグはしんどい ✓ どこで書き換わったか見つけるの が難しい ✓ gdbのwatchとか使う? ✓ 良い方法があれば教えてください >< 140/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  142. 142. その他、気づいた所は本に 書きました
  143. 143. 今日話すこと ✓ ノーマル編 ✓ ガチムチ編 ✓ GCの実装を読むコツ ✓ GCバッドノウハウ集 ✓ まぼろしの目次案 142/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  144. 144. まぼろしの目次案
  145. 145. アルゴリズム編で抜けた章 ✓ 並列GC ✓ 並行GC 144/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  146. 146. 実装編で抜けた章 ✓ HotspotVMのGC ✓ GCを作ってみよう! 145/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  147. 147. 紹介する予定だったアルゴリズ ム ✓ TreadmillGC ✓ MappingCollector ✓ etc... 146/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  148. 148. HotspotVM(OpenJDK7) ✓ 2ヶ月くらい掛けていた!! ✓ 50ページくらい書いていた!! ✓ タイムオーバー…orz 147/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  149. 149. なのでこの場を借りて説明 します><
  150. 150. 正確なGCへの道: HotspotVM編
  151. 151. HotspotVM ✓ スタックマシン ✓ スタックマシンとは(ry 150/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  152. 152. JVMスタック ✓ メソッド呼び出し時にフレームを積 む 151/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  153. 153. ポインタと即値の区別 ✓ プリミティブ型はJVMの中でも数 値として扱っている ✓ プリミティブ型の値がフレーム内 に混ざってしまう ✓ 区別しなければ保守的GCとなる 152/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  154. 154. ポインタと即値の区別 ✓ フレーム内 ✓ ローカル変数配列 ✓ オペランドスタック ✓ 即値? ポインタ? わからん… 153/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  155. 155. どうするか?
  156. 156. 「参照マップ」の作成
  157. 157. HotspotVM実行フロー ✓ .java => .class ✓ .classはJavaバイトコードの固まり ✓ VMはバイトコードの命令セットを1 つずつ実行 156/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  158. 158. 抽象的インタプリタ ✓ 実体はないけど型情報だけで実 行しちゃおう ✓1 + 1 = 2 ✓ => int + int = int ✓ ローカル変数配列、スタック内に 入る型情報を記録 ✓ => 参照マップ 157/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  159. 159. どういうものか実際に見て みましょう
  160. 160. とあるソースコード 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
  161. 161. Javaバイトコードが 透けて見えますよね
  162. 162. こうなる 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
  163. 163. 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
  164. 164. 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
  165. 165. 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
  166. 166. ちょっと飛ばして
  167. 167. 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
  168. 168. 参照マップ ✓ 一命令毎のJVMフレームの情報 を持つ ✓ 現在JVMスタックに積まれているフレー ム全て ✓ 情報 => 「参照型」「プリミティブ 型」を区別する地図 167/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  169. 169. なぜローカル変数配列に マップが必要?
  170. 170. グローバル変数、クラス変数等 の場合 ✓ グローバル変数、クラス変数等 ✓ 型情報によってコンパイル時に区別可 能 169/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  171. 171. ローカル変数配列の場合 ✓ フレーム内のローカル変数 ✓ ローカル変数配列の内容は実行時に 決まる 170/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  172. 172. 駄目なケース if (条件) { Object referenceType = new Object(); } else { int primitiveType = 1; } ✓ 条件によってローカル変数配列内 の情報が変化 171/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  173. 173. 続いて
  174. 174. G1GC
  175. 175. G1GCとは ✓ OpenJDK7に入ってる ✓ Garbage-First Garbage Collection ✓ サーバタイプ ✓ 大容量のメモリ使う ✓ 停止時間を気にする 174/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  176. 176. 概要 ✓ Javaヒープを「リージョン」単位に 分割 ✓ トレインGCに似ている 175/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  177. 177. 従来のCMS(Cuncurrent  Mark Sweep)
  178. 178.   http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
  179. 179.   http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
  180. 180. G1GC
  181. 181.   http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
  182. 182.   http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
  183. 183.   http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5419.pdf
  184. 184. G1GCの特徴 ✓ 並行GC ✓ 並列でできることは並列化(凄い) ✓ リージョン内のゴミ割合が分かる ✓ 停止時間が予測可能 183/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  185. 185. リージョン内のゴミ割合が 分かる?
  186. 186. リージョン毎の記憶集合 185/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  187. 187. 記憶集合 ✓ 記憶集合からゴミが割り出せる ✓ ゴミが多いリージョンがわかる 186/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  188. 188. Garbage-First ✓ ゴミが多いリージョンを優先的に GC 187/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  189. 189. 賢い
  190. 190. 停止時間が予測可能?
  191. 191. ゴミの割合がわかるということ は ✓ 一つのリージョンにかかるGC時間 もわかるはず ✓ マシンパワーに依存する計算時間 も加味 ✓ GC時に実際に計測して予測精度を高 める 190/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  192. 192. 停止時間の設定 ✓ ユーザが「これくらいの停止時間 で!」というのを設定できる ✓ それを越えないようにGC対象の リージョンを選択 191/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  193. 193. 「あなたが予測可能な範囲 で止まりますよ!」 という割り切り
  194. 194. かなり賢い
  195. 195. 参考文献 ✓ 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
  196. 196. せっかく ここまでがんばったので ✓ 「実装編:HotspotVMのGC」章を 出したいなあ ✓ 電子書籍? ✓ まだわかりません>< 195/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  197. 197. まとめ
  198. 198. まとめ ✓ HotspotVMは大変だった ✓ G1GCの論文も大変 ✓ 俺の正月…どこいってしもたん…? ✓ 目次案は皮算用しない! 197/202 GC本のツクリカタ - Making of the GC book Powered by Rabbit 0.6.4
  199. 199. 今回発表でいいたかった
  200. 200. たった一つのこと
  201. 201. なんやかんやで GCカワイイ!
  202. 202. ご静聴 ありがとうございました。
  203. 203. 質疑応答 (GC本の内容に関すること でも可)

×