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