垃圾回收的算法与实现读书笔记—序章

GC要做的有两件事:

  1. 找到内存空间里的垃圾;
  2. 回收垃圾;
    让程序员能再次利用这部分空间,满足这两项功能的程序就是 GC。

没有GC的语言会面临几个问题:

  1. 内存泄漏;
  2. 释放空间,没有将指针置为空,导致悬挂指针;
  3. 错误释放内存;

最初的GC算法是John McCarthy在1960年发布的。John McCarthy身为Lisp之父和人工智能之父,是一名非常有名的黑客,事实上他同时也是GC之父。

GC算法分类:

  • 标记-清除算法:1960年,McCarthy在其论文中首次发布了GC算法。在这篇论文中发布的算法,就是现在我们所说的GC标记-清除算法;
  • 引用计数算法:1960年,George E. Collins在论文中发布了叫作引用计数的 GC算法。当时Collins可能没有注意到,引用计数法有个缺点,就是它不能回收“循环引用” 。Harold McBeth在1963年指出了这个缺点;
  • 复制算法:1963年,也有“人工智能之父”之称的Marvin L. Minsky在论文中发布了复制算法;
    现在为世人所知的GC算法,不过是从这三种基本算法中衍生出来的产物。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容