GC学习笔记:GC定义及历史(一)
前言
现实开发中,业务开发人员其实很少接触到GC相关的工作,本人接触GC纯粹是因为好奇和R大的早期博文与一些论坛的回答。断断续续的接触一些碎片化的知识,借此将其写下来作为自己学习的一个论证吧。
此系列是阅读中村成洋与相川光著的垃圾回收的算法与实现的笔记。
定义
GC是 Garbage Collection
的缩写,也就是 垃圾回收
。
顾名思义,程序的垃圾回收就是把程序不用的内存空间回收。
做的事情
- 找到内存空间的垃圾
- 回收垃圾,让空间再次得以利用
GC的好处
没有GC的世界里,由程序员自己手动进行内存管理,这势必非常地麻烦。可能会发生如下问题:
- 忘记释放内存空间会发生 内存泄漏 问题
- 释放空间时,忘记初始化指向释放对象的内存空间指针时,会发生 悬垂指针 问题
- 错误的释放了正在使用中的内存空间,会使程序发生错误
所以在现在的高级语言中都有GC,避免了程序员手动释放内存的麻烦和可能会出现的安全问题
GC的历史
- 1959
D. Edwards
实现了GC- 1960
John McCarthy
发布了初代GC算法即标记-清除
算法- 1960
George E. Collins
发布了引用计数
算法