垃圾回收的演算法與實現 垃圾回收的算法与实现

[日]中村成洋 相川光

立即出貨

買這商品的人也買了...

商品描述

<內容簡介>

本書分為“算法篇”和“實現篇”兩大部分。算法篇介紹了標記-清除算法、引用計數法、複製算法、標記-壓縮算法、保守式GC、分代垃圾回收、增量式垃圾回收、RC Immix算法等幾種重要的算法;實現篇介紹了垃圾回收在Python、DalvikVM、Rubinius、V8等幾種語言處理程序中的具體實現。

<目錄>


序章

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