GC 算法是计算机科学领域非常热的研究话题之一,最早可追溯到 1959 年1,由 John McCarthy 在 Lisp 中实现来简化手动内存管理,早期的 Lisp 之所以被大众诟病慢,主要原因就是当时的 GC 实现相对简单,对程序的影响(overhead)比较严重。经过几十年的发展,GC 算法已经很成熟了,可以完全摆脱「速度慢」这个让人望而却步的标签。 单就 JVM 这个平台来说,GC 算法一直在优化、演变,从最初的串行到高吞吐量的并行,为了解决高延迟又演化出了 CMS(Concurrent Mark Sweep),为了解决碎片问题,又开发了 G1,Oracle 内部还在不断尝试新算法,比如 ZGC。
由于公众号不允许外链,可点击https://liujiacai.net/blog/2018/06/15/garbage-collection-intro/进入个人博客阅读。