内容简介
序章
GC的定义
GC的好处
GC的历史
为什么我们现在要学GC
读者对象
本书中的符号
算法篇
第1章 学习GC之前
1.1 对象/头/域
1.2 指针
1.3 mutator
1.4 堆
1.5 活动对象/非活动对象
1.6 分配
1.7 分块
1.8 根
1.9 评价标准
第2章 GC标记-清除算法
2.1 什么是GC标记-清除算法
2.2 优点
2.3 缺点
2.4 多个空闲链表
2.5 BiBOP法
2.6 位图标记
2.7 延迟清除法
第3章 引用计数法
3.1 引用计数的算法
3.2 优点
3.3 缺点
3.4 延迟引用计数法
3.5 Sticky引用计数法
3.6 1位引用计数法
3.7 部分标记-清除算法
第4章 GC复制算法
4.1 什么是GC复制算法
4.2 优点
4.3 缺点
4.4 Cheney的GC复制算法
4.5 近似深度优先搜索方法
4.6 多空间复制算法
第5章 GC标记-压缩算法
5.1 什么是GC标记-压缩算法
5.2 优点
5.3 缺点
5.4 Two-Finger算法
5.5 表格算法
5.6 ImmixGC算法
第6章 保守式GC
6.1 什么是保守式GC
6.2 优点
6.3 缺点
6.4 准确式GC
6.5 间接引用
6.6 MostlyCopyingGC
6.7 黑名单
第7章 分代垃圾回收
7.1 什么是分代垃圾回收
7.2 Ungar的分代垃圾回收
7.3 优点
7.4 缺点
7.5 记录各代之间的引用的方法
7.6 多代垃圾回收
7.7 列车垃圾回收
第8章 增量式垃圾回收
8.1 什么是增量式垃圾回收
8.2 优点和缺点
8.3 Steele的算法
8.4 汤浅的算法
8.5 比较各个写入屏障
第9章 RC Immix算法
9.1 目的
9.2 合并型引用计数法
9.3 合并型引用计数法和Immix的融合
9.4 优点和缺点
实现篇
第10章 Python的垃圾回收
10.1 写在前面
10.2 对象管理
10.3 Python的内存分配器
10.4 第0层通用的基础分配器
10.5 第1层Python低级内存分配器
10.6 第2层Python对象分配器
10.7 第3层对象特有的分配器
10.8 引用计数法
10.9 引用的所有权
10.10 如何应对有循环引用的垃圾对象
10.11 性能调整的建议
第11章 DalvikVM的垃圾回收
11.1 本章前言
11.2 重新学习mmap
11.3 DalvikVM的源代码
11.4 DalvikVM的GC算法
11.5 对象管理
11.6 标记阶段
11.7 清除阶段
11.8 Q&A
第12章 Rubinius的垃圾回收
12.1 本章前言
12.2 Rubinius的GC算法
12.3 对象管理
12.4 走向准确式GC之路
12.5 GC复制算法
12.6 Q&A
第13章 V8的垃圾回收
13.1 本章前言
13.2 V8的GC算法
13.3 对象管理
13.4 通往准确式GC之路(V8篇)
13.5 GC标记-压缩算法
13.6 标记阶段
13.7 压缩阶段
13.8 Q&A
附录
附录A 简单语言入门:Python篇
附录B 简单语言入门:Java篇
附录C 简单语言入门:Ruby篇
附录D 简单语言入门:JavaScript篇
后记
参考文献