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

概 要

プログラムが使用しなくなったメモリ領域を再利用する機能「ガベージコレクション」のアルゴリズムと実装について実践的に解説した技術書です。現在利用されているプログラミング言語の多くがGCを搭載していますが、GCに特化した日本語解説書はありませんでした。日本人が書いた初のGC解説本である本書は2部構成になっており、アルゴリズム編では、これまで数多く考案されてきたGCアルゴリズムの中から重要なものを厳選して紹介し、GCアルゴリズム独特の考え方やアルゴリズムの特性を解説しています。実装編では、PythonやDalvikVM、Rubinius、V8での実際のGCコードを読み解くことで、GCについての理解を体系的に深めていく構成になっています。本書を読めば、メモリ領域を意識したプログラミングができるようになります。

著者 中村成洋、相川光、竹内郁雄(監)
価格 本体3200円(税別)
ISBN 978-4-7980-2562-9
発売日 2010/3/18
判型 B5変
色数 1色
ページ数 462
CD/DVD
対象読者 中級
シリーズ
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

●序章

GCとは

GCの恩恵

GCの歴史

なぜ今GCなのか

読者対象

本書の表記

●アルゴリズム編

第1章 GCを学ぶ前に

1.1 オブジェクト/ヘッダ/フィールド

1.2 ポインタ

1.3 ミューテータ

1.4 ヒープ領域

1.5 生きている/死んでいるオブジェクト

1.6 アロケーション

1.7 チャンク

1.8 ルート

1.9 評価項目

第2章 マークスイープGC(Mark Sweep GC)

2.1 マークスイープGCとは

2.2 メリット

2.3 デメリット

2.4 複数フリーリスト(Multiple free-list)

2.5 BiBOP法(Big Bag Of Pages)

2.6 ビットマップマーキング(Bitmap Marking)

2.7 遅延スイープ法(Lazy sweep)

第3章 参照カウント(Reference Counting)

3.1 参照カウントのアルゴリズム

3.2 メリット

3.3 デメリット

3.4 遅延参照カウント法(Deferred Reference Counting)

3.5 Sticky参照カウント法

3.6 1ビット参照カウント(1bit Reference Counting)

3.7 部分マークスイープ法(Partial Mark & Sweep)

第4章 コピーGC(Copying GC)

4.1 コピーGCとは

4.2 メリット

4.3 デメリット

4.4 CheneyのコピーGC

4.5 近似的深さ優先探索法

4.6 複数空間コピー法

第5章 マークコンパクトGC(Mark Compact GC)

5.1 マークコンパクトGCとは

5.2 メリット

5.3 デメリット

5.4 Two-Fingerアルゴリズム

5.5 テーブルアルゴリズム

5.6 ImmixGC

第6章 保守的GC(Conservative GC)

6.1 保守的GCとは

6.2 メリット

6.3 デメリット

6.4 正確なGC(Exact GC)

6.5 間接参照

6.6 MostlyCopyingGC

6.7 ブラックリスト

第7章 世代別GC(Generational GC)

7.1 世代別GCとは

7.2 Ungarの世代別GC

7.3 メリット

7.4 デメリット

7.5 世代間の参照を記録する方法

7.6 複数世代管理GC(Multi-generational GC)

7.7 トレインGC(Train GC)

第8章 インクリメンタルGC(Incremental GC)

8.1 インクリメンタルGCとは

8.2 メリット・デメリット

8.3 Steeleのアルゴリズム

8.4 湯淺のアルゴリズム

8.5 各ライトバリアの比較

●実装編

第9章 PythonのGC

9.1 はじめに

9.2 オブジェクト管理

9.3 Pythonのメモリアロケータ

9.4 第0層 汎用的な基礎アロケータ

9.5 第1層 Python低レベルメモリアロケータ

9.6 第2層 Pythonオブジェクトアロケータ

9.7 第3層 オブジェクト特有アロケータ

9.8 参照カウント

9.9 参照の所有権

9.10 循環参照をもつゴミオブジェクトへの対応

9.11 パフォーマンスチューニングのヒント

第10章 DalvikVMのGC

10.1 はじめに

10.2 mmap再入門

10.3 DalvikVMのソースコード

10.4 DalvikVMのGCアルゴリズム

10.5 オブジェクト管理

10.6 マークフェーズ

10.7 スイープフェーズ

10.8 Q&A

第11章 RubiniusのGC

11.1 はじめに

11.2 RubiniusのGCアルゴリズム

11.3 オブジェクト管理

11.4 正確なGCへの道

11.5 コピーGC

11.6 Q&A

第12章 V8のGC

12.1 はじめに

12.2 V8のGCアルゴリズム

12.3 オブジェクト管理

12.4 正確なGCへの道(V8編)

12.5 マークコンパクトGC

12.6 マークフェーズ

12.7 コンパクションフェーズ

12.8 Q&A

●補遺

補遺A 簡単言語入門:Python編

補遺B 簡単言語入門:Java編

補遺C 簡単言語入門:Ruby編

補遺D 簡単言語入門:JavaScript編

補遺E 参考文献

索引

PR

秀和システム