基本概念

垃圾回收

垃圾回收(Garbage Collection,GC)引起大家的关注,是从 1995 年 Java 发布后开始的。事实上,GC 作为计算机科学领域非常热的研究话题之一,最早可以追溯到 1959 年的夏天,起初是用用来简化 Lisp 内存管理的。在接下来 60 余年的时间里,通过 Cheney、Baker 等大师的不断努力,GC 的世界里出现了标记清除、复制、分代、增量回收等一系列 GC 算法,基于这些算法,又出现了种类繁复的垃圾回收器。

GC 把程序不用的内存空间视为垃圾,(几乎所有的)GC 要做的就只有两件事:

  • 找到内存空间里的垃圾,使其和活对象分开来。
  • 回收垃圾对象的内存,使得程序可以重复使用这些内存。

GC 给我们带来的好处不言而喻,选择 GC 而不是手动释放资源的原因很简单:程序比人更可靠。即便是 C/C++ 这种没有 GC 的语言,也有类似 Boehm GC 这样的第三方库来实现内存的自动管理了。可以毫不夸张地说,GC 已经是现代编程语言的标配。

Links