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

  • 秀和システム
4.08
  • (14)
  • (14)
  • (11)
  • (0)
  • (0)
本棚登録 : 378
感想 : 11
本ページはアフィリエイトプログラムによる収益を得ています
  • Amazon.co.jp ・本 (472ページ)
  • / ISBN・EAN: 9784798025629

作品紹介・あらすじ

古からの魔法ガベージコレクションの秘密を完全解説。

感想・レビュー・書評

並び替え
表示形式
表示件数
絞り込み
  • けっこうエキサイティングな本で楽しめました。
    RefCount式GCのバリエーションがいくつか紹介されていて、まだまだ改善の余地があると思った。この本で紹介されているRefCount式GCのバリエーションはいずれも「いらなくなったら即時解放」というRefCount式の最大のメリットを捨てているのだけど、それも工夫次第で解消できそう。
    C++の言語特性、つまりRAIIとポインタ剥がしのオーバーロードによるスマートポインタと、一工夫加えたRefCount式で作ったGCがあればまだ戦える…というのがRefCount式GC好きな私の印象です。
    あとV8のGCが興味深いね。あれ、保守的GCをじゃなく正確なGCなんだね。これもC++の言語特性を十分に使っていてすばらしい。

  • コンピュータ言語のメモリー管理手法であるガベージコレクションの
    アルゴリズムと実装を解説した非常にレアな本。

    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ソースコード完全解説」
    しか知らない。

  • 基本編とpython部分を読了。
    かなり丁寧に書かれていて、勉強になりました。

    ある程度、LL系を触ってて、GCを理解したい人にはオススメ。

  • 前半は参照カウント式、マークスイープ式、コピーGC、保守的GC、世代別GC等、GCの基礎理論の解説。後半はPythonやDalvikVM、V8等に実装されているGCを実際のコードと共に追っていく。処理の根幹を説明後、詳細を追うと共に、場合分けでアルゴリズムに抜け漏れがないことを確認していくという、論文ではよく見られる論理展開を、とても易しく解説されているところがよい。
    現実の実装を見ることにより、各処理系がどのようにしてアドホックに基礎理論を組み合わせているのか、というのが分かるだけでも価値があると思う。

  • 公式正誤表:
    ftp://ftp2.shuwasystem.co.jp/pub/book/2562/Errata.pdf

    非公式正誤表(登録 3 件):
    http://public-errata.appspot.com/errata/book/978-4-7980-2562-9/

  • アルゴリズム編と実装編に分かれており、アルゴリズム編では、現在に至るまでに考案された様々なGCについて、そのアルゴリズムを擬似コードで解説しており、実装編では、Python、DalvikVM(Android)、Rubinius(Ruby)、V8(Google Chrome)の4つのGCを取り上げて、コードレベルで解説をしている。

    アルゴリズム編については、ところどころ難しくてなかなか理解できない箇所があるものの、豊富な図解付きであまたのアルゴリズムを解説しており、とても興味深くそして楽しく読むことができる。また、読み進めていくうちに、いろんな研究者や技術者が、GCについて試行錯誤を繰り返したという、(大げさだが)歴史的な背景を垣間見ることができる。

    実装編は、Rubiniusの解説はわかりやすかったものの、ほかはそうでもない印象。結構飽きてくる。また、C/C++のコードをなんとなく読めないと、なかなか理解することはできないかも。

    日々開発をしているうえで、多くの人はGCの恩恵についてあまり深く考えないと思うが、この本を読んでみてGCが行っていることのすごさを感じてほしい。ただ、472ページと分量が多く、読むのに疲れてくると思うので、気合で乗り切ってほしい。

  • GCについて古典的な手法について一通り解説した本。
    後半は有名なソフトのGCを題材に、実際にコードを追いながら解説してるので、座学だけでは吸収しきれない部分もフォローできると思います。

    ただ、本格的にGCを学ぼう、という人にとってはこの本で書かれていることは古典の半分程度。残りの半分をThe Garbage Collection Handbookで学んで教科書レベルを理解、って感じでしょうか。

    いずれにせよ、日本語で気軽かつ本格的にGCの勉強ができる唯一の本です。

  • - 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"

全11件中 1 - 10件を表示

中村成洋の作品

  • 話題の本に出会えて、蔵書管理を手軽にできる!ブクログのアプリ AppStoreからダウンロード GooglePlayで手に入れよう
ツイートする
×