ガベージコレクションのアルゴリズムと実装 の商品レビュー
コンピュータ言語のメモリー管理手法であるガベージコレクションの アルゴリズムと実装を解説した非常にレアな本。 1章 GCを学ぶ前に 簡単なメモリ全般の説明 2章 マークスイープGC 一番最初に実装されたGCだそうです。メリットとしては実装が簡単 デメリットとしてはフラグ...
コンピュータ言語のメモリー管理手法であるガベージコレクションの アルゴリズムと実装を解説した非常にレアな本。 1章 GCを学ぶ前に 簡単なメモリ全般の説明 2章 マークスイープGC 一番最初に実装されたGCだそうです。メリットとしては実装が簡単 デメリットとしてはフラグメンテーションが起こりやすいことである このデメリットを改良した複数のバージョンが存在する 3章 参照カウント オブジェクト自身に管理させる方法。 メモリの回収効率がよい。デメリットとしては実装が煩雑。 カウント処理が重いなどがある。この方法にも改良バージョンが ある。 4章 コピーGC 管理方法はマークスイープGCであるがメモリ回収方法が違う フラグメンテーションが原理上発生しない。デメリットとしては ヒープ空間の利用率が悪い 5章 マークコンンパクトGC マークスイープGCとコピーGCを組み合わせたGC ヒープ空間の利用率がよいがコンパクション処理が重い 6章 保守的GC 省略 7章 世代別GC 新しい世代ほどGCを掛けてメモリ回収効率をあげる手法 8章 インクリメンタルGC GCを行うにはミューテータをとめてから行う。停止時間が 長いと支障がでるので停止を短く、複数回行う方法 9章 PythonのGC PythonのGCは参照カウント方式です。Python Ver 3.0.1の ソースコードを使ってGC実装部分を解説してあります 10章 DalvikVMのGC マークスイープGCを採用している 11章 RubiniusのGC 世代別GCが採用されている 12章 V8のGC 世代別GCが採用されている 本書でプログラム言語のGCについて解説したものであるが 一部とはいえプログラム言語をソースレベルで解説した 本ともいえる。類書としては「Rubyソースコード完全解説」 しか知らない。
Posted by
基本編とpython部分を読了。 かなり丁寧に書かれていて、勉強になりました。 ある程度、LL系を触ってて、GCを理解したい人にはオススメ。
Posted by
公式正誤表: ftp://ftp2.shuwasystem.co.jp/pub/book/2562/Errata.pdf 非公式正誤表(登録 3 件): http://public-errata.appspot.com/errata/book/978-4-7980-2562-9...
公式正誤表: ftp://ftp2.shuwasystem.co.jp/pub/book/2562/Errata.pdf 非公式正誤表(登録 3 件): http://public-errata.appspot.com/errata/book/978-4-7980-2562-9/
Posted by
アルゴリズム編と実装編に分かれており、アルゴリズム編では、現在に至るまでに考案された様々なGCについて、そのアルゴリズムを擬似コードで解説しており、実装編では、Python、DalvikVM(Android)、Rubinius(Ruby)、V8(Google Chrome)の4つ...
アルゴリズム編と実装編に分かれており、アルゴリズム編では、現在に至るまでに考案された様々なGCについて、そのアルゴリズムを擬似コードで解説しており、実装編では、Python、DalvikVM(Android)、Rubinius(Ruby)、V8(Google Chrome)の4つのGCを取り上げて、コードレベルで解説をしている。 アルゴリズム編については、ところどころ難しくてなかなか理解できない箇所があるものの、豊富な図解付きであまたのアルゴリズムを解説しており、とても興味深くそして楽しく読むことができる。また、読み進めていくうちに、いろんな研究者や技術者が、GCについて試行錯誤を繰り返したという、(大げさだが)歴史的な背景を垣間見ることができる。 実装編は、Rubiniusの解説はわかりやすかったものの、ほかはそうでもない印象。結構飽きてくる。また、C/C++のコードをなんとなく読めないと、なかなか理解することはできないかも。 日々開発をしているうえで、多くの人はGCの恩恵についてあまり深く考えないと思うが、この本を読んでみてGCが行っていることのすごさを感じてほしい。ただ、472ページと分量が多く、読むのに疲れてくると思うので、気合で乗り切ってほしい。
Posted by
GCについて古典的な手法について一通り解説した本。 後半は有名なソフトのGCを題材に、実際にコードを追いながら解説してるので、座学だけでは吸収しきれない部分もフォローできると思います。 ただ、本格的にGCを学ぼう、という人にとってはこの本で書かれていることは古典の半分程度。残り...
GCについて古典的な手法について一通り解説した本。 後半は有名なソフトのGCを題材に、実際にコードを追いながら解説してるので、座学だけでは吸収しきれない部分もフォローできると思います。 ただ、本格的にGCを学ぼう、という人にとってはこの本で書かれていることは古典の半分程度。残りの半分をThe Garbage Collection Handbookで学んで教科書レベルを理解、って感じでしょうか。 いずれにせよ、日本語で気軽かつ本格的にGCの勉強ができる唯一の本です。
Posted by
けっこうエキサイティングな本で楽しめました。 RefCount式GCのバリエーションがいくつか紹介されていて、まだまだ改善の余地があると思った。この本で紹介されているRefCount式GCのバリエーションはいずれも「いらなくなったら即時解放」というRefCount式の最大のメリッ...
けっこうエキサイティングな本で楽しめました。 RefCount式GCのバリエーションがいくつか紹介されていて、まだまだ改善の余地があると思った。この本で紹介されているRefCount式GCのバリエーションはいずれも「いらなくなったら即時解放」というRefCount式の最大のメリットを捨てているのだけど、それも工夫次第で解消できそう。 C++の言語特性、つまりRAIIとポインタ剥がしのオーバーロードによるスマートポインタと、一工夫加えたRefCount式で作ったGCがあればまだ戦える…というのがRefCount式GC好きな私の印象です。 あとV8のGCが興味深いね。あれ、保守的GCをじゃなく正確なGCなんだね。これもC++の言語特性を十分に使っていてすばらしい。
Posted by
- P. VI 謝辞 "Search Later" - P. 3 GCの歴史 "Basic" - P. 22 1.9.4 参照の局所性 - P. 48 3.3.4 循環参照が回収できない "散々" - P. 18...
- P. VI 謝辞 "Search Later" - P. 3 GCの歴史 "Basic" - P. 22 1.9.4 参照の局所性 - P. 48 3.3.4 循環参照が回収できない "散々" - P. 181 8.4 湯浅のアルゴリズム "湯浅太一" - P. 195 "uintptr_t" - P. 203 9.6.1 ブロック "alignment" - P. 264 9.11 パフォーマンスチューニングのヒント "Python GC Debug" - P. 269 10.1.5 bionic "Android libc" - P. 297 コラム "why Registers?" - P. 327 コラム "Why Rubinius?" - P. 330 コラム "GC Library" - P. 336 "Likely" - P. 379 12.1.2 V8とは "Lars Bak" - P. 393 12.4.4 タグ付け "V8 TAG" - P. 400 コラム "class name" - P. 440 コラム "minigc"
Posted by
- 1