garbage collection

22
垃垃垃垃垃垃 UVGE 刘刘

Upload: kim-leo

Post on 08-Aug-2015

442 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Garbage collection

垃圾收集四讲UVGE 刘清

Page 2: Garbage collection

• 历史与发展• 优缺点• 原理• 实现

Page 3: Garbage collection

历史与发展历史与发展

• LISP

• ML系语言• JVM

• C++

• Perl/Python/Ruby

• CLR

Page 4: Garbage collection

优缺点优缺点优点:

a)方便b)可靠

缺点:• 时间及空间的开销• 实现和移植的复杂性( JVM和 KVM)

• 底层操作的实现• 对对象模型的影响

Page 5: Garbage collection

优缺点优缺点

改善:• 可选式 GC

• 允许显式引入不安全操作

Page 6: Garbage collection

原理原理

• 引用计数–缺点:循环引用

Page 7: Garbage collection

循环引用循环引用

A

B

1

1

Page 8: Garbage collection

标记 -清扫算法标记 -清扫算法• 寻找根对象并标记• 按照广度优先遍历算法进行遍历标记

• 任何被标记的都是存活对象,不会被清除

• 进行清扫过程

Page 9: Garbage collection

原理原理

• 引用计数–缺点:循环引用

• 标记 -清扫–缺点:效率

Page 10: Garbage collection

原理原理

• 引用计数–缺点:循环引用

• 标记 -清扫–缺点:效率

• 分代式收集( 2: 8原则)– 80%的对象只存活于%20的程序生命期

Page 11: Garbage collection

分代式垃圾收集分代式垃圾收集Gen0

Gen1

Gen2

Gen0

Page 12: Garbage collection

分代式垃圾收集分代式垃圾收集Gen0

Gen1

Gen2

Gen0

Page 13: Garbage collection

分代式垃圾收集分代式垃圾收集

Gen1

Gen2

Gen0

Page 14: Garbage collection

分代式垃圾收集分代式垃圾收集

Gen1

Gen2

Gen0

Page 15: Garbage collection

分代式垃圾收集分代式垃圾收集

Gen1

Gen2

Gen0

Page 16: Garbage collection

分代式垃圾收集分代式垃圾收集

Gen2

Gen0

Gen1

Page 17: Garbage collection

分代式垃圾收集分代式垃圾收集

Gen2

Gen0

Gen1

Page 18: Garbage collection

分代式垃圾收集分代式垃圾收集

Gen2

Gen0

Gen1

Page 19: Garbage collection

分代式垃圾收集分代式垃圾收集Gen0

Gen2

Gen1

Page 20: Garbage collection

分代式垃圾收集分代式垃圾收集Gen0

Gen1

Gen2

Gen0

Gen2

Gen1

Page 21: Garbage collection

原理原理

• 引用计数–缺点:循环引用

• 标记 -清扫–缺点:效率

• 分代式收集( 2: 8原则)– 80%的对象只存活于%20的程序生命期

• 复制 -缩并–小内存:只使用缩并算法

Page 22: Garbage collection

实现实现