garbage collection
TRANSCRIPT
垃圾收集四讲UVGE 刘清
• 历史与发展• 优缺点• 原理• 实现
历史与发展历史与发展
• LISP
• ML系语言• JVM
• C++
• Perl/Python/Ruby
• CLR
优缺点优缺点优点:
a)方便b)可靠
缺点:• 时间及空间的开销• 实现和移植的复杂性( JVM和 KVM)
• 底层操作的实现• 对对象模型的影响
优缺点优缺点
改善:• 可选式 GC
• 允许显式引入不安全操作
原理原理
• 引用计数–缺点:循环引用
循环引用循环引用
A
B
1
1
标记 -清扫算法标记 -清扫算法• 寻找根对象并标记• 按照广度优先遍历算法进行遍历标记
• 任何被标记的都是存活对象,不会被清除
• 进行清扫过程
√
√
√
√
原理原理
• 引用计数–缺点:循环引用
• 标记 -清扫–缺点:效率
原理原理
• 引用计数–缺点:循环引用
• 标记 -清扫–缺点:效率
• 分代式收集( 2: 8原则)– 80%的对象只存活于%20的程序生命期
分代式垃圾收集分代式垃圾收集Gen0
Gen1
Gen2
Gen0
分代式垃圾收集分代式垃圾收集Gen0
Gen1
Gen2
Gen0
分代式垃圾收集分代式垃圾收集
Gen1
Gen2
Gen0
分代式垃圾收集分代式垃圾收集
Gen1
Gen2
Gen0
分代式垃圾收集分代式垃圾收集
Gen1
Gen2
Gen0
分代式垃圾收集分代式垃圾收集
Gen2
Gen0
Gen1
分代式垃圾收集分代式垃圾收集
Gen2
Gen0
Gen1
分代式垃圾收集分代式垃圾收集
Gen2
Gen0
Gen1
分代式垃圾收集分代式垃圾收集Gen0
Gen2
Gen1
分代式垃圾收集分代式垃圾收集Gen0
Gen1
Gen2
Gen0
Gen2
Gen1
原理原理
• 引用计数–缺点:循环引用
• 标记 -清扫–缺点:效率
• 分代式收集( 2: 8原则)– 80%的对象只存活于%20的程序生命期
• 复制 -缩并–小内存:只使用缩并算法
实现实现