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

ZHH2009 2014-08-29
LeafInWind 写道
请问有没有什么介绍CMS原理的论文


A Generational Mostly-concurrent Garbage Collector

https://www.cs.purdue.edu/homes/hosking/ismm2000/papers/printezis.pdf
tracybryant 2014-08-29
系统学习GC这里有个网站不错
http://www.memorymanagement.org/
另外还是建议入手一本GC HandBook,R大貌似没有翻译了,我打算着手翻译这本书
ZHH2009 2014-08-29
做学术研究的一些个人习惯和基本方法:

tracybryant 写道
系统学习GC这里有个网站不错
http://www.memorymanagement.org/
另外还是建议入手一本GC HandBook,R大貌似没有翻译了,我打算着手翻译这本书

这网站除了术语那一块有用之外,
其他的还不如读一篇Paul R. Wilson的【Uniprocessor Garbage Collection Techniques】(67页)

透彻的学习一个技术领域的知识,
我觉得一开始找本教科书花一天快速的过一遍
(比如我前面提到的编译原理那本书就花一章基本就把核心的东西说清楚了),
然后直接读论文,一般某个技术领域只要有些年头的(像GC这样伴随Lisp出生的领域)
肯定会有一些综述性的论文(就像Paul R. Wilson所做的事)来总结过去几十年这
个领域内的研究者们做过的事,哪些人哪些Paper是起到转折作用的,
之后的研究者又是如何在前人的基础上改进的,
不同的研究者在哪个小方向上攻(分代的,实时的……)
这些综述性的论文后面必定会有大量的参考文献,
此时可以到论文搜索网站把里面的重点的并且自己感兴趣的论文找出来仔细的读读。

最后再通过一个具体的开源项目来研究(比如研究GC,HotSpot的GC模块确实有研究价值),
通常最新的理论进展也会休现在这类开源项目中,
原来的实现都可以找到最初的论文,
比如HotSpot的CMS对应的论文就是A Generational Mostly-concurrent Garbage Collector,
而此论文又是在Hans-J. Boehm等人的Mostly Parallel Garbage Collection上改进来的(来自古老的Xerox公司)

如果自己有了新发现,立马就能在这类开源项目中实现,然后再出论文,
总结你做了什么前人没有想到的,你这篇论文对这个技术领域的贡献是什么?

我认为这才叫系统的学习和研究。

PS.
The Garbage Collection Handbook这书听说是好书,
但是我舍不得花4、5百RMB买,我看了一下目录也差不多知道书里讲什么了。

翻译这种这么专业这么小众的书不会有多少读者的,出版社、译者都很难赚钱,
而且对译者的技术水平又要求非常高,真能认真看完这书的潜在读者至少还是能读英文论文的,所以我还是更建议出版社直接出少量的影印版,卖得完再重印。
LeafInWind 2014-08-30
关于The Garbage Collection Handbook,我在淘宝上买了一本,一百元
tracybryant 2014-08-31
嗯,你说的也有道理,所有垃圾收集器的经典论文我都看了。我推荐的那个网站里面的一些文章跟GC HandBook里面的参考文献差不多,所以我才会在这里列出来。至于我翻译这本书,我不为赚钱,也不为任何利益。只是觉得国内今后涉足GC行业的人会越来越多,所以我希望自己可以做点什么,当前自己翻译的水平有限,也不知道可以坚持多久。
tracybryant 2014-08-31
GC HandBook那本书我也是淘宝买的,100rmb
ZHH2009 2014-08-31
楼上两位你们买的是盗版的么?
LeafInWind 2014-09-01
请教tracybryant,看GC handbook花了多长时间,另外是如何处理看书和看论文的关系的。我最近也刚开始看这本书,静下心看基本能看懂,但感觉看得很累。
巴海和 2014-09-01
网上有电子版吧,我这里就有,刚下的,不是扫描版,是文字版,500多页。
ZHH2009 2014-09-02
GC实现:

快速浏览了一下jdk9中的gc开发log : http://hg.openjdk.java.net/jdk9/hs-gc/

似乎oracle的重心只放在g1上了,
对比jdk8-b132中的gc_implementation模块的代码,也只有g1新增了一些源文件。


g1从论文发布到现在10年了,未来有没有可能完全取代现有的其他gc实现?

IBM家的JVM是否也像HotSpot这样带了这么多种GC实现让用户选择?(常导致错误使用)

这里也有几篇介绍IBM JVM与GC相关的文章:
http://www.ibm.com/developerworks/cn/websphere/techjournal/1106_bailey/1106_bailey.html
http://www.ibm.com/developerworks/cn/websphere/techjournal/1108_sciampacone/1108_sciampacone.html

下面两篇有点老:
http://www.ibm.com/developerworks/cn/java/j-ibmjava2/
http://www.ibm.com/developerworks/cn/java//j-ibmjava3/

也提供了多种策略供选择。

像HotSpot中g1和parallelScavenge的代码基本上不和其他的GC实现共用,
阅读和维护起来还是挺吃力的。
Global site tag (gtag.js) - Google Analytics