《垃圾回收的算法與實現》,本書作者中村成洋/相川光,譯者丁靈,由人民郵電出版社出版。
基本介紹
- 書名:垃圾回收的算法與實現
- 作者:中村成洋/相川光
- 原版名稱:ガベージコレクションのアルゴリズムと実裝
- 譯者:丁靈
- ISBN:9787115427472
- 頁數:456頁
- 定價:99.00元
- 出版社:人民郵電出版社
- 裝幀:平裝
內容簡介,書籍目錄,
內容簡介
日本天才程式設計師兼Lisp黑客竹內郁雄審校
本書前半介紹基本GC算法,包括標記-清除GC、引用計數、複製算法的GC、串列GC的算法、並發GC的算法等。後半介紹V8、Rubinius、Dalvik、CPython等幾種具體GC的實現。本書適合各領域程式設計師閱讀。
書籍目錄
序章
GC的定義 1
GC的好處 2
GC的歷史 3
為什麼我們現在要學GC 4
讀者對象 6
本書中的符號 7
算法篇
第1章 學習GC之前
1.1 對象/頭/域 12
1.2 指針 14
1.3 mutator 15
1.4 堆 15
1.5 活動對象/非活動對象 16
1.6 分配 16
1.7 分塊 17
1.8 根 17
1.9 評價標準 19
第2章 GC標記-清除算法
2.1 什麼是GC標記-清除算法 22
2.2 優點 29
2.3 缺點 29
2.4 多個空閒鍊表 31
2.5 BiBOP法 33
2.6 點陣圖標記 34
2.7 延遲清除法 37
第3章 引用計數法
3.1 引用計數的算法 40
3.2 優點 44
3.3 缺點 44
3.4 延遲引用計數法 46
3.5 Sticky引用計數法 50
3.6 1位引用計數法 52
3.7 部分標記-清除算法 55
第4章 GC複製算法
4.1 什麼是GC複製算法 66
4.2 優點 73
4.3 缺點 74
4.4 Cheney的GC複製算法 74
4.5 近似深度優先搜尋方法 78
4.6 多空間複製算法 83
第5章 GC標記-壓縮算法
5.1 什麼是GC標記-壓縮算法 89
5.2 優點 94
5.3 缺點 95
5.4 Two-Finger算法 95
5.5 表格算法 100
5.6 ImmixGC算法 106
第6章 保守式GC
6.1 什麼是保守式GC 119
6.2 優點 122
6.3 缺點 122
6.4 準確式GC 123
6.5 間接引用 125
6.6 MostlyCopyingGC 127
6.7 黑名單 139
第7章 分代垃圾回收
7.1 什麼是分代垃圾回收 142
7.2 Ungar的分代垃圾回收 143
7.3 優點 153
7.4 缺點 154
7.5 記錄各代之間的引用的方法 154
7.6 多代垃圾回收 156
7.7 列車垃圾回收 157
第8章 增量式垃圾回收
8.1 什麼是增量式垃圾回收 166
8.2 優點和缺點 174
8.3 Steele的算法 174
8.4 湯淺的算法 176
8.5 比較各個寫入屏障 178
第9章 RC Immix算法
9.1 目的 180
9.2 合併型引用計數法 180
9.3 合併型引用計數法和Immix的融合 185
9.4 優點和缺點 189
實現篇
第10章 Python的垃圾回收
10.1 本章前言 192
10.2 對象管理 194
10.3 Python的記憶體分配器 196
10.4 第0層 通用的基礎分配器 197
10.5 第1層 Python低級記憶體分配器 198
10.6 第2層 Python對象分配器 208
10.7 第3層 對象特有的分配器 231
10.8 引用計數法 234
10.9 引用的所有權 239
10.10 如何應對有循環引用的垃圾對象 245
10.11 性能調整的建議 269
第11章 DalvikVM的垃圾回收
11.1 本章前言 271
11.2 重新學習mmap 275
11.3 DalvikVM的原始碼 279
11.4 DalvikVM的GC算法 282
11.5 對象管理 282
11.6 標記階段 299
11.7 清除階段 322
11.8 Q&A 327
第12章 Rubinius的垃圾回收
12.1 本章前言 329
12.2 Rubinius的GC算法 333
12.3 對象管理 334
12.4 走向準確式GC之路 343
12.5 GC複製算法 359
12.6 Q&A 375
第13章 V8的垃圾回收
13.1 本章前言 379
13.2 V8的GC算法 382
13.3 對象管理 382
13.4 通往準確式GC之路(V8篇) 389
13.5 GC標記-壓縮算法 398
13.6 標記階段 400
13.7 壓縮階段 412
13.8 Q&A 431
附錄
附錄A 簡單語言入門:Python篇 432
附錄B 簡單語言入門:Java篇 435
附錄C 簡單語言入門:Ruby篇 436
附錄D 簡單語言入門:JavaScript篇 437
後記 439
參考文獻 441
GC的定義 1
GC的好處 2
GC的歷史 3
為什麼我們現在要學GC 4
讀者對象 6
本書中的符號 7
算法篇
第1章 學習GC之前
1.1 對象/頭/域 12
1.2 指針 14
1.3 mutator 15
1.4 堆 15
1.5 活動對象/非活動對象 16
1.6 分配 16
1.7 分塊 17
1.8 根 17
1.9 評價標準 19
第2章 GC標記-清除算法
2.1 什麼是GC標記-清除算法 22
2.2 優點 29
2.3 缺點 29
2.4 多個空閒鍊表 31
2.5 BiBOP法 33
2.6 點陣圖標記 34
2.7 延遲清除法 37
第3章 引用計數法
3.1 引用計數的算法 40
3.2 優點 44
3.3 缺點 44
3.4 延遲引用計數法 46
3.5 Sticky引用計數法 50
3.6 1位引用計數法 52
3.7 部分標記-清除算法 55
第4章 GC複製算法
4.1 什麼是GC複製算法 66
4.2 優點 73
4.3 缺點 74
4.4 Cheney的GC複製算法 74
4.5 近似深度優先搜尋方法 78
4.6 多空間複製算法 83
第5章 GC標記-壓縮算法
5.1 什麼是GC標記-壓縮算法 89
5.2 優點 94
5.3 缺點 95
5.4 Two-Finger算法 95
5.5 表格算法 100
5.6 ImmixGC算法 106
第6章 保守式GC
6.1 什麼是保守式GC 119
6.2 優點 122
6.3 缺點 122
6.4 準確式GC 123
6.5 間接引用 125
6.6 MostlyCopyingGC 127
6.7 黑名單 139
第7章 分代垃圾回收
7.1 什麼是分代垃圾回收 142
7.2 Ungar的分代垃圾回收 143
7.3 優點 153
7.4 缺點 154
7.5 記錄各代之間的引用的方法 154
7.6 多代垃圾回收 156
7.7 列車垃圾回收 157
第8章 增量式垃圾回收
8.1 什麼是增量式垃圾回收 166
8.2 優點和缺點 174
8.3 Steele的算法 174
8.4 湯淺的算法 176
8.5 比較各個寫入屏障 178
第9章 RC Immix算法
9.1 目的 180
9.2 合併型引用計數法 180
9.3 合併型引用計數法和Immix的融合 185
9.4 優點和缺點 189
實現篇
第10章 Python的垃圾回收
10.1 本章前言 192
10.2 對象管理 194
10.3 Python的記憶體分配器 196
10.4 第0層 通用的基礎分配器 197
10.5 第1層 Python低級記憶體分配器 198
10.6 第2層 Python對象分配器 208
10.7 第3層 對象特有的分配器 231
10.8 引用計數法 234
10.9 引用的所有權 239
10.10 如何應對有循環引用的垃圾對象 245
10.11 性能調整的建議 269
第11章 DalvikVM的垃圾回收
11.1 本章前言 271
11.2 重新學習mmap 275
11.3 DalvikVM的原始碼 279
11.4 DalvikVM的GC算法 282
11.5 對象管理 282
11.6 標記階段 299
11.7 清除階段 322
11.8 Q&A 327
第12章 Rubinius的垃圾回收
12.1 本章前言 329
12.2 Rubinius的GC算法 333
12.3 對象管理 334
12.4 走向準確式GC之路 343
12.5 GC複製算法 359
12.6 Q&A 375
第13章 V8的垃圾回收
13.1 本章前言 379
13.2 V8的GC算法 382
13.3 對象管理 382
13.4 通往準確式GC之路(V8篇) 389
13.5 GC標記-壓縮算法 398
13.6 標記階段 400
13.7 壓縮階段 412
13.8 Q&A 431
附錄
附錄A 簡單語言入門:Python篇 432
附錄B 簡單語言入門:Java篇 435
附錄C 簡單語言入門:Ruby篇 436
附錄D 簡單語言入門:JavaScript篇 437
後記 439
參考文獻 441