垃圾回收
概述
垃圾回收(Garbage Collection)是一种自动内存管理机制,由 John McCarthy 在1960年 LISP 论文中首次提出。系统自动识别并回收不再使用的内存,使程序员无需手动管理内存生命周期。
关键内容
原始设计
McCarthy 提出了一种标记-清除(mark-and-sweep)算法: 1. 当可用内存耗尽时,系统暂停程序执行 2. 扫描所有可达的数据结构 3. 将不可达的内存单元回收到空闲列表中
解决的问题
在没有自动内存管理的语言中,程序员必须手动释放不再使用的内存——这不仅繁琐,而且极易出错: - 忘记释放 → 内存泄漏 - 过早释放 → 悬垂指针
现代影响
今天,Java、Python、Go、JavaScript、Ruby、C#、Kotlin、Swift 等绝大多数现代编程语言都采用了某种形式的自动垃圾回收。GC 算法也从最初简陋的标记-清除发展为分代收集、并发收集、增量收集等多种高效变体。
只有少数语言不使用 GC
C、C++ 和 Rust(通过所有权系统替代 GC)等少数语言还要求程序员显式管理内存。
来源
- raw/books/计算机科学/05-mccarthy-lisp.md
相关
- LISP — 首次引入
- John McCarthy — 提出者
- LISP 论文 — 首次描述