GC学习笔记:GC定义及历史(一)

前言

 现实开发中,业务开发人员其实很少接触到GC相关的工作,本人接触GC纯粹是因为好奇和R大的早期博文与一些论坛的回答。断断续续的接触一些碎片化的知识,借此将其写下来作为自己学习的一个论证吧。

此系列是阅读中村成洋与相川光著的垃圾回收的算法与实现的笔记。

定义

GC是Garbage Collection的缩写,也就是“垃圾回收”。
顾名思义,程序的垃圾回收就是把程序不用的内存空间回收。

做的事情

  • 找到内存空间的垃圾
  • 回收垃圾,让空间再次得以利用

GC的好处

没有GC的世界里,由程序员自己手动进行内存管理,这势必非常地麻烦。
可能会发生如下问题:

  • 忘记释放内存空间会发生内存泄漏问题
  • 释放空间时,忘记初始化指向释放对象的内存空间指针时,会发生悬垂指针问题
  • 错误的释放了正在使用中的内存空间,会使程序发生错误

所以在现在的高级语言中都有GC,避免了程序员手动释放内存的麻烦和可能会出现的安全问题

GC的历史

  • 1959: D. Edwards实现了GC
  • 1960: John McCarthy发布了初代GC算法即标记-清除算法
  • 1960: George E. Collins发布了引用计数算法
  • 1963: Marvin L. Minsky发布了复制算法
  • 1996: 首次出版了Garbage Collection一书