我想学习垃圾回收的理论。我该怎么做?显而易见的答案是 - 一本编译器教材...问题是,在一本文本中通常在垃圾回收之前需要学习词法分析、解析和其他方面的知识是否必要呢?
简而言之,学习垃圾回收理论的先决条件是什么?
P.S - 我知道解析、词法分析等工具的目的,只是不知道它们如何实现。
我想学习垃圾回收的理论。我该怎么做?显而易见的答案是 - 一本编译器教材...问题是,在一本文本中通常在垃圾回收之前需要学习词法分析、解析和其他方面的知识是否必要呢?
简而言之,学习垃圾回收理论的先决条件是什么?
P.S - 我知道解析、词法分析等工具的目的,只是不知道它们如何实现。
也许这些基本思想中最值得注意的演变是分代垃圾回收,它是多年来的事实标准设计。
我个人认为,一些关于垃圾回收的晦涩工作传达了同样有用的信息,所以我也强烈推荐:
然后,您可能还想研究三种写障碍器(Dijkstra、Steele和Yuasa)并查看卡片标记和记忆集技术。
然后,您可能还想检查一些实现者为Java和.NET等语言实现以及Standard ML的SML/NJ编译器、OCaml编译器、Glasgow Haskell编译器等选择的实际设计决策。采用的技术之间的差异与它们之间的相似之处一样大!
还有一些非常相关的论文,比如Henderson的在不合作环境中进行准确的垃圾回收。我使用了那个技术来避免为HLVM编写堆栈行走器。
memorymanagement.org网站是一个非常宝贵的资源,特别是与GC相关术语的词汇表。
有一本完整的垃圾收集书籍,而且相当不错,如果我可以这样说:
Richard Jones 和 Rafael Lins, Garbage Collection, Wiley and Sons (1996), ISBN 0471941484
Richard Jones 还维护了一个很好的垃圾收集资源收集站点。
大多数早期的垃圾收集论文都非常易读。你可以从 Paul Wilson 的《单处理器垃圾回收技术调查》(1992, LNCS vol. 637) 开始,然后深入研究那些听起来有趣的主题的原始文献。