第1章 簡介
1. 1 內存分配的歷史
1. 1. 1 靜態(tài)分配
1. 1. 2 棧分配
1. 1. 3 堆分配
1. 2 狀態(tài). 存活性和指針可到達性
1. 3 顯式堆分配
1. 3. 1 一個簡單的例子
1. 3. 2 垃圾
1. 3. 3 懸掛引用
1. 3. 4 共享
1. 3. 5 失敗
1. 4 為什么需要垃圾收集
1. 4. 1 語言的需求
1. 4. 2 問題的需求
1. 4. 3 軟件工程的課題
1. 4. 4 沒有銀彈
1. 5 垃圾收集的開銷有多大
1. 6 垃圾收集算法比較
1. 7 記法
1. 7. 1 堆
1. 7. 2 指針和子女
1. 7. 3 偽代碼
1. 8 引文注記
第2章 經典算法
2. 1 引用計數(shù)算法
2. 1. 1 算法
2. 1. 2 一個例子
2. 1. 3 引用計數(shù)算法的優(yōu)勢和弱點
2. 1. 4 環(huán)形數(shù)據(jù)結構
2. 2 標記一清掃算法
2. 2. 1 算法
2. 2. 2 標記—清掃算法的優(yōu)勢和弱點
2. 3 節(jié)點復制算法
2. 3. 1 算法
2. 3. 2 一個例子
2. 3. 3 節(jié)點復制算法的優(yōu)勢和弱點
2. 4 比較標記—清掃技術和節(jié)點復制技術
2. 5 需要考慮的問題
2. 6 引文注記
第3章 引用計數(shù)
3. 1 非遞歸的釋放
3. 1. 1 算法
3. 1. 2 延遲釋放的優(yōu)點和代價
3. 2 延遲引用計數(shù)
3. 2. 1 Deutsch-Bobrow算法
3. 2. 2 一個例子
3. 2. 3 ZCT溢出
3. 2. 4 延遲引用計數(shù)的效率
3. 3 計數(shù)域大小受限的引用計數(shù)
3. 3. 1 “粘住的”計數(shù)值
3. 3. 2 追蹤式收集恢復計數(shù)值
3. 3. 3 僅有一位的計數(shù)值
3. 3. 4 恢復獨享信息
3. 3. 5 “Ought to be two”緩沖區(qū)
3. 4 硬件引用計數(shù)
3. 5 環(huán)形引用計數(shù)
3. 5. 1 函數(shù)式程序設計語言
3. 5. 2 Bobrow的技術
3. 5. 3 弱指針算法
3. 5. 4 部分標記—清掃算法
3. 6 需要考慮的問題
3. 7 引文注記
第4章 標記—清掃垃圾收集
4. 1 與引用計數(shù)技術的比較
4. 2 使用標記棧
4. 2. 1 顯式地使用棧來實現(xiàn)遞歸
4. 2. 2 最小化棧的深度
4. 2. 3 棧溢出
4. 3 指針反轉
4. 3. 1 Deutsch-Schorr-Waite算法
4. 3. 2 可變大小節(jié)點的指針反轉
4. 3. 3 指針反轉的開銷
4. 4 位圖標記
4. 5 延遲清掃
4. 5. 1 Hughes的延遲清掃算法
4. 5. 2 Boehm-Demers-Weiser清掃器
4. 5. 3 Zorn的延遲清掃器
4. 6 需要考慮的問題
4. 7 引文注記
第5章 標記—縮并垃圾收集
5. 1 碎片現(xiàn)象
5. 2 縮并的方式
5. 3 “雙指針”算法
5. 3. 1 算法
5. 3. 2 對“雙指針”算法的分析
5. 3. 3 可變大小的單元
5. 4 Lisp 2 算法
5. 5 基于表的方法
5. 5. 1 算法
5. 5. 2 間斷表
5. 5. 3 更新指針
5. 6 穿線方法
5. 6. 1 穿線指針
5. 6. 2 Jonkers的縮并算法
5. 6. 3 前向指針
5. 6. 4 后向指針
5. 7 需要考慮的問題
5. 8 引文注記
第6章 節(jié)點復制垃圾收集
6. 1 Cheney的節(jié)點復制收集器
6. 1. 1 三色抽象
6. 1. 2 算法
6. 1. 3 一個例子
6. 2 廉價地分配
6. 3 多區(qū)域收集
6. 3. 1 靜態(tài)區(qū)域
6. 3. 2 大型對象區(qū)域
6. 3. 3 漸進的遞增縮并垃圾收集
6. 4 垃圾收集器的效率
6. 5 局部性問題
6. 6 重組策略
6. 6. 1 深度優(yōu)先節(jié)點復制與廣度優(yōu)先節(jié)點復制
6. 6. 2 不需要棧的遞歸式節(jié)點復制收集
6. 6. 3 近似于深度優(yōu)先的節(jié)點復制
6. 6. 4 層次分解
6. 6. 5 哈希表
6. 7 需要考慮的問題
6. 8 引文注記
第7章 分代式垃圾收集
7. 1 分代假設
7. 2 分代式垃圾收集
7. 2. 1 一個簡單例子
7. 2. 2 中斷時間
7. 2. 3 次級收集的根集合
7. 2. 4 性能
7. 3 提升策略
7. 3. 1 多個分代
7. 3. 2 提升的閩值
7. 3. 3 Standard ML of New Jersey收集器
7. 3. 4 自適應提升
7. 4 分代組織和年齡記錄
7. 4. 1 每個分代一個半區(qū)
7. 4. 2 創(chuàng)建空間
7. 4. 3 記錄年齡
7. 4. 4 大型對象區(qū)域
7. 5 分代間指針
7. 5. 1 寫攔截器
7. 5. 2 入口表
7. 5. 3 記憶集
7. 5. 4 順序保存緩沖區(qū)
7. 5. 5 硬件支持的頁面標記
7. 5. 6 虛存系統(tǒng)支持的頁面標記
7. 5. 7 卡片標記
7. 5. 8 記憶集還是卡片
7. 6 非節(jié)點復制的分代式垃圾收集
7. 7 調度垃圾收集
7. 7. 1 關鍵對象
7. 7. 2 成熟對象空間
7. 8 需要考慮的問題
7. 9 1 文注記
第8章 漸進式和并發(fā)垃圾收集
8. 1 同步
8. 2 攔截器方案
8. 3 標記—清掃收集器
8. 3. 1 寫攔截器
8. 3. 2 新單元
8. 3. 3 初始化和終止
8. 3. 4 虛存技術
8. 4 并發(fā)引用計數(shù)
8. 5 Baker的算法
8. 5. 1 算法
8. 5. 2 Baker算法的延遲的界限
8. 5. 3 Baker的算法的局限
8. 5. 4 Baker算法的變種
8. 5. 5 動態(tài)重組
8. 6 Appel-Ellis-Li收集器
8. 6. 1 各種改進
8. 6. 2 大型對象
8. 6. 3 分代
8. 6. 4 性能
8. 7 應變復制收集器
8. 7. 1 Nettle的應變復制收集器
8. 7. 2 Huelsbergen和Larus的收集器
8. 7. 3 Doligez-Leroy-Gonthier收集器
8. 8 Baker的工作環(huán)收集器
8. 9 對實時垃圾收集的硬件支持
8. 10 需要考慮的問題
8. 11 引文注記
第9章 C語言的垃圾收集
9. 1 根不確定收集的一個分類
9. 2 保守式垃圾收集
9. 2. 1 分配
9. 2. 2 尋找根和指針
9. 2. 3 內部指針
9. 2. 4 保守式垃圾收集的問題
9. 2. 5 識別錯誤
9. 2. 6 效率
9. 2. 7 漸進式. 分代式垃圾收集
9. 3 準復制式收集
9. 3. 1 堆的布局
9. 3. 2 分配
9. 3. 3 垃圾收集
9. 3. 4 分代式垃圾收集
9. 3. 5 無法精確識別的數(shù)據(jù)結構
9. 3. 6 準復制式收集的效率
9. 4 優(yōu)化的編譯器是“魔鬼”
9. 5 需要考慮的問題
9. 6 引文注記
第10章 C++語言的垃圾收集
10. 1 用于面向對象語言的垃圾收集
10. 2 對C++垃圾收集器的需求
10. 3 在編譯器中還是在庫中
10. 4 保守式垃圾收集
10. 5 準復制式收集器
10. 6 智能指針
10. 6. 1 在沒有智能指針類層次的情況下進行轉換
10. 6. 2 多重繼承
10. 6. 3 不正確的轉換
10. 6. 4 某些指針無法“智能化”
10. 6. 5 用const和volatile修飾的指針
10. 6. 6 智能指針的“泄漏”
10. 6. 7 智能指針和引用計數(shù)
10. 6. 8 一個簡單的引用計數(shù)指針
10. 6. 9 用于靈活的垃圾收集的智能指針
10. 6. 10 用于追蹤式垃圾收集的智能指針
10. 7 為支持垃圾收集而修改C++
10. 8 Ellis和Deters的建議
10. 9 終結機制
10. 10 需要考慮的問題
10. 11 引文注記
第11章 垃圾收集與cache
11. 1 現(xiàn)代處理器體系結構
11. 2 cache的體系結構
11. 2. 1 cache容量
11. 2. 2 放置策略
11. 2. 3 寫策略
11. 2. 4 特殊的cache指令
11. 3 內存訪問的模式
11. 3. 1 標記 —清掃技術, 使用標記位圖和延遲清掃
11. 3. 2 節(jié)點復制垃圾收集
11. 3. 3 漸進式垃圾收集
11. 3. 4 避免讀取
11. 4 改進cache性能的標準方法
11. 4. 1 cache的容量
11. 4. 2 塊大小
11. 4. 3 相聯(lián)度
11. 4. 4 特殊指令
11. 4. 5 預取
11. 5 失誤率和總體cache性能
11. 6 專用硬件
11. 7 需要考慮的問題
11. 8 引文注記
第12章 分布式垃圾收集
12. 1 需求
12. 2 虛擬共享存儲器
12. 2. 1 共享虛擬存儲器模型
12. 2. 2 共享數(shù)據(jù)對象模型
12. 2. 3 分布式共享存儲器之上的垃圾收集
12. 3 與分布式垃圾收集有關的課題
12. 3. 1 分類原則
12. 3. 2 同步
12. 3. 3 魯棒性
12. 4 分布式標記—清掃
12. 4. 1 Hudak和Keller
12. 4. 2 Ali的算法
12. 4. 3 Hughes的算法
12. 4. 4 Liskov-Ladin算法
12. 4. 5 Augusteijn的算法
12. 4. 6 Vestal的算法
12. 4. 7 Schelvis-Bledoeg算法
12. 4. 8 Emerald收集器
12. 4. 9 IK收集器
12. 5 分布式節(jié)點復制
12. 6 分布式引用計數(shù)
12. 6. 1 Lermen-Maurer協(xié)議
12. 6. 2 間接引用計數(shù)
12. 6. 3 Mancini-Shrivastava算活
12. 6. 4 SPG協(xié)議
12. 6. 5 “Garbage collecting the world”
12. 6. 6 網絡對象
12. 6. 7 帶權引用計數(shù)
12. 6. 8 世代引用計數(shù)
12. 7 對actor進行垃圾收集
12. 7. 1 Halstead算法
12. 7. 2 標記算法
12. 7. 3 邏輯上集中式的收集器
12. 8 引文注記
術語表
參考文獻
索引
算法列表