[讨论] GC的历史综述与最新进展以及在HotSpot中的具体实现

ZHH2009 2014-08-26
此贴记录与GC(垃圾收集:Garbage Collection)相关的历史综述与最新进展以及在HotSpot中的具体实现。

目前我在HotSpot中研究并发和GC两大模块,会不定期更新此贴的内容。



最近一直在了解HotSpot中有关并发的实现代码,牵扯到GC相关的,
所以想把GC这个领域中的东西都尽可能弄明白。

希望大家能就三个大问题聊一下:
1.GC的过去 : 基本上就是GC的发展史

2.GC的最新进展: 最近5年内出了哪些不错的论文

3.GC在HotSpot中的具体实现 : 这个又是一个大问题

国内能买到的专门讲GC的书似乎没有,
我最近看的书有关GC的多数只占一章的篇幅:

【编译原理 : 原理、技术与工具】http://book.douban.com/subject/3296317/
第二版的第7章介绍了一些常见的GC算法,并且给出了伪代码实现,
章节后面的参考文献很有考古价值,文献中最新的年份是1992,
这书是在2006年写成的,难道作者认为这14年中GC相关的技术没有可聊的?

【深入理解Java虚拟机】http://book.douban.com/subject/6522893/
第3章,侧重概念和HotSpot中的一些收集器的简单介绍。

【HotSpot实战】http://book.douban.com/subject/25847620/
第5章所讲内容与【深入理解Java虚拟机】第3章类似

【虚拟机:系统与进程的通用平台】http://book.douban.com/subject/3611865/
第6.3节简单介绍了一下收集器


一些网络上的资料:
hotspot-gc 邮件组:
http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-dev

hotspot-gc模块开发者Jon Masamitsu's Weblog
https://blogs.oracle.com/jonthecollector/

Garbage collection Wiki: http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)

其他语言中的GC:
Ruby 2.0 Bitmap Marking :
http://patshaughnessy.net/2012/3/23/why-you-should-be-excited-about-garbage-collection-in-ruby-2-0

在acm中搜索GC相关的学术论文:
http://www.acm.org/

要找到好的GC论文得花不少心思,如果你看到不错的GC论文可以在回复中贴一下URL。

ZHH2009 2014-08-27
HLLVM群组中已有的一些好贴:

【新生代回收调试的一些心得】
http://hllvm.group.iteye.com/group/topic/35798

【HotSpot VM Serial GC的一个问题】
http://hllvm.group.iteye.com/group/topic/39376

【Shenandoah GC的资料收集和讨论】
http://hllvm.group.iteye.com/group/topic/39407
ZHH2009 2014-08-27
GC较新的进展(与HotSpot VM的G1相关):

G1的论文: Garbage-first garbage collection, 2004年发表:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.63.6386&rep=rep1&type=pdf

.
RednaxelaFX 2014-08-27
GC研究的“最新进展”可能在ACM论文库上搜一下更好。用“GC”或者“garbage collection”关键字搜都行。

要系统介绍GC的现状的还是要靠《The Garbage Collection Handbook》
(抱歉我已经没有在翻译这本书了…)

LeafInWind同学在本群组发过一帖讨论Serial Old的实现的:
http://hllvm.group.iteye.com/group/topic/39516

我发在豆瓣的JVM书单里有提到一本G1GC的源码剖析书:
《徹底解剖「G1GC」 アルゴリズム編》 http://tatsu-zine.com/books/g1gc,中村成洋

有一篇讲G1 GC的write barrier消除的JIT编译器优化的论文,算是跟GC擦边:
Compile-time concurrent marking write barrier removal, David Detlefs, V. Krishna Nandivada, 2005

Red Hat基于OpenJDK研发的Shenandoah GC的资料收集和讨论
http://hllvm.group.iteye.com/group/topic/39407
ZHH2009 2014-08-27
ACM论文库优点是论文丰富,比如用“garbage collection”关键字搜出来1万多条。

缺点是:
正因为论文丰富,无法从结果中快速判断哪个论文有价值,
如果用Citation Count来排序,发现排在前面的不一定跟GC相关,
所以从中找出最有价值的论文也是个体力活。

还有一个缺点是ACM的论文是要收钱的,会员费用少一点,
非会员下一篇论文将近100RMB,所以更有必要知道论文质量如何。

《The Garbage Collection Handbook》 似乎还没看到有影印版
这书最新版是2011年的,我想后面肯定少不了参考文献,
可以从上面捡一些95年到2011年有价值的GC论文放出来看看,
经过这书的作者引用的至少说明的确有些价值。


PS. @RednaxelaFX 我知道你手上有这书,把书后的参考文献拍几张照晒出来吧,
这应该算不上盗版,也影响不大。
ZHH2009 2014-08-27
有关GC的发展史:

【Dynamic Storage Allocation: A Survey and Critical Review】
http://www.cs.cmu.edu/afs/cs/academic/class/15213-f98/doc/dsa.pdf

讲述了1961到1995年与动态存储分配(也包括GC)有关的论文


Paul R. Wilson的【Uniprocessor Garbage Collection Techniques】
http://www.cs.cmu.edu/~fp/courses/15411-f08/misc/wilson94-gc.pdf
详细分析了1992年前的GC技术
ZHH2009 2014-08-27
如何搜索GC相关的学术论文:

搜学术论文CiteSeerX比ACM更好用,而且会在右边提供一些免费的下载地址

http://citeseerx.ist.psu.edu/index

用Advanced Search,然后在Keywords或者Abstract中输入查询关键字,
然后在Sorting Criteria按citations排序通常搜出的论文质量还是挺靠谱的。
ZHH2009 2014-08-27
GC较新的进展:

IBM出了一个
Staccato: A Parallel and Concurrent Real-time Compacting Garbage Collector for Multiprocessors

http://researcher.watson.ibm.com/researcher/files/us-groved/rc24504.pdf

话说已经在IBM J9 VM中实现,论文中声称已支持硬/软实时GC。

PS. 还说比Azul家的好
ZHH2009 2014-08-28
GC的实现技术大体上分为两派:
1. 引用计数(Reference counting)
2. 跟踪(Tracing)

实际上目前这两种流派都还在发展,
通过引用计数实现GC最早出现在George E. Collins于1960年12月发表的
A Method for Overlapping and Erasure of Lists(这篇论文我没找到免费版)

基于跟踪的GC最早出现在John McCarthy于1960年4月发表的
Recursive Functions of Symbolic Expressions and Their Computation by Machine
LeafInWind 2014-08-29
请问有没有什么介绍CMS原理的论文
Global site tag (gtag.js) - Google Analytics