『徹底解剖「G1GC」 アルゴリズム編』発売!!

GCLoverのみなさん、お待たせしました。
GC本のスピンオフとなる新著、『徹底解剖「G1GC」 アルゴリズム編』が発売中です!
達人出版会様の以下のページからご購入下さい。
なんと600円です!!! すぐにでもポチっちゃってください!!!!!

徹底解剖「G1GC」 アルゴリズム編 - 達人出版会

どういう内容なの?

まえがきをみるとよくわかります。

今回はOpenJDK7(いわゆるJava7)に新しく実装された「G1GC(Garbage First
Garbage Collection)」というGCの謎を解明していきます。
G1GCの大きな謎として「GC停止時間を予測できる」というのがあります。本書
ではその謎の回答を何十ページもかけて解説しています。

G1GCについて書かれた資料として、Detlefsらの英語の論文(Detlefs04)があ
ります。
ところが、これは謎が謎を呼ぶようなとても難しい論文で、一度読んだ程度で
はすべてを理解できません。

筆者がG1GCの論文にはじめて出会ったのは今から4年前のことです。そのときは、
英語も読めず、GCも詳しくないという状況で、論文を読むのをすぐに諦めてし
まいました。
それから3年たって、GCについてある程度詳しくなってから挑んだのですが、そ
れでもすんなりと理解できません。そこからは、論文を読み、G1GCの実装を読
み、論文を読み…と繰り返して、半年程経った頃にようやくすべて理解できま
した。
G1GCの理解は筆者にとって「いばらの道」だったのです。

本書では、アルゴリズムの内容を論文よりも丁寧に説明しました。筆者が理解
に苦しんだ箇所は特に詳しく書いています。そのため、元の論文よりわかりや
すく、GCをよく知らない人でも理解できる内容に仕上がっています。

ーーまえがきより抜粋

GC本はかなりマニアックな部類の本ですが、本書はそれを遙かにしのぐマニアックさになりました。
もし僕がいなければこの世にこんな本はでませんので、そういった意味では大変レアな本になっております。

この本が世に出て嬉しい人は日本にどれくらいいるのでしょうか…と実験的な部分もありますが…。
ただし、一部の人には本当に本当に楽しい本になっています。

むむ、もう少し売れるようなことを書かないと…。
たとえば、Javaプログラマの人は読んでおいて損はありません。
G1GCはOpenJDKに搭載されるGCですし、これからも末永く利用されることでしょう。
その原理を知っておいても損はないですよね。
もしかしたら、本書を読んでおくことで、そういうお仕事ができるようになるかもしれません。
トラブル対応とかね(!!!)。

あと、本書ではイラストによるマンガ的なものを書いてみました。
で、これは黒歴史になるかもしれない…と思っています。

なんで書いたの?

GC本を書いているとき、本来は実装編で「HotspotVMのGC」という章を入れるつもりでした。
しかし、HotspotVMのGCが巨大すぎて、とても執筆期間では読み終わらないということになりボツになりました。
その過程で40ページほどの原稿をすでに書いていたのですが、これを死蔵させるのはもったいないので、達人出版会様でなんとか…というのが最初のきっかけです。

当初は実装だけを中心に紹介していこうと思ったのですが、書いている途中で「やっぱりはじめにアルゴリズムを紹介した方がいい」と判断し、本書の執筆をはじめました。
なので、本書は実はすべて書き下ろしなのです!!

誰得ですか、と問われると、僕得としかいえません…。

レビュー

7人のレビュアさんにレビューしてもらいました!!
本当にありがとうございます!!

今回は本書の最初に「レビュアのみなさんから一言」を載せております。
こちらもお楽しみ下さい。

目次

はじめに
  まえがき
  注意事項
  読者対象
  本書の表記
  並列・並行GC

第1章 G1GCとは
  G1GCとリアルタイム性
  ヒープ構造
  実行概要
  並行マーキングと退避

第2章 並行マーキング(Concurrent Marking)
  並行マーキングとは
  マーク用ビットマップ
  実行ステップ
  ステップ1?初期マークフェーズ
  ステップ2?並行マークフェーズ
  ステップ3?最終マークフェーズ
  ステップ4?生存オブジェクトカウント
  ステップ5?後始末
  まとめ

第3章 退避(Evacuation)
  退避とは
  退避用記憶集合
  退避用ライトバリア
  退避用記憶集合維持スレッド
  ホットカード(Hot card)
  実行ステップ
  ステップ1?回収集合選択
  ステップ2ールート退避
  ステップ3?退避
  マーク情報の援助
  まとめ

第4章 ソフトリアルタイム性(Soft real-time)
  ユーザの要望
  退避時間の予測
  予測信頼度
  停止のスケジューリング
  並行マーキングの停止処理

第5章 世代別G1GC方式(Generational garbage-first mode)
  異なる点
  新世代リージョン
  世代別なオブジェクト退避
  実行概要
  世代別な回収集合選択
  新世代リージョン数上限決定
  GCの切り替え
  GC実行タイミング

まとめ
  関連図
  メリット
  デメリット
  おわりに

付録
  参考文献
  レビュアのみなさんから一言
  謝辞
  あとがき

あわせて読みたい

ガベージコレクションのアルゴリズムと実装

ガベージコレクションのアルゴリズムと実装

蛇足: あとがきについて

あとがきを書いた時期がちょうどそういう時期だったので、いろいろと自分も考えていて、なんとなく不謹慎な内容を書かずにはいられなくなり、あのようなあとがきになりなました。
と、こんな風に書くとあとがきだけ読んでしまう人がいそうですね。
あとがきにはネタバレがあるから本文から読んでね!!(嘘

備考: 「安すぎませんか?!」について

「安すぎ」と言われることがあります。
正直、価格設定は悩みました。もう少し高くしようかなとも思ったんですよ。
というのも、この本を書くだけで8ヶ月くらいかかったからです。
コードリーディングのメモは1000行を越えていますから…。

まぁ、本書けるだけありがたいじゃん的な話はあって、もちろんそれはそうなのです。
しかし、マニアックな本というのは書くのは大変だし、ものすごく時間がかかります。
しかもその上に需要がない分野だったりすると、全然儲からない。
でも、私はそんな本が好きだから、そういうのが世の中に増えて欲しいなぁと思うわけです。

しかし、そんな本を書く人にお金が入らなければ、本を書くこと自体が継続されません。
お金のためじゃないとかいうけど、いいコンテンツを継続して作るにはお金も重要な要素なのですね。

ですので、この本も1500円とかそれくらいにしようかと考えたのですが、いろいろ悩んだ結果やめました。
理由としてはまだ最初の電子書籍だし、どの位の売れるのかを測るための物だからと言うのがあります。
なのでページ数的に無難な600円にしたと。
今回の売れ行きを見ながら、今後出す本の価格を調整していければよいなぁなどと空想しています。