前言

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

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

定义

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

做的事情

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

GC的好处

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

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

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

GC的历史

1959
D. Edwards 实现了GC
1960
John McCarthy 发布了初代GC算法即 标记-清除 算法
1960
George E. Collins 发布了 引用计数 算法