标记-清除( Mark-Sweep )算法
来源:互联网 发布:sql join和union 编辑:程序博客网 时间:2024/05/17 03:32
第一种实用和完善的垃圾收集算法是 J. McCarthy 等人在 1960 年提出并成功地应用于 Lisp 语言的标记-清除算法。仍以餐巾纸为例,标记-清除算法的执行过程是这样的:
午餐过程中,餐厅里的所有人都根据自己的需要取用餐巾纸。当垃圾收集机器人想收集废旧餐巾纸的时候,它会让所有用餐的人先停下来,然后,依次询问餐厅里的每一个人:“你正在用餐巾纸吗?你用的是哪一张餐巾纸?”机器人根据每个人的回答将人们正在使用的餐巾纸画上记号。询问过程结束后,机器人在餐厅里寻找所有散落在餐桌上且没有记号的餐巾纸(这些显然都是用过的废旧餐巾纸),把它们统统扔到垃圾箱里。
正如其名称所暗示的那样,标记-清除算法的执行过程分为“标记”和“清除”两大阶段。这种分步执行的思路奠定了现代垃圾收集算法的思想基础。与引用计数算法不同的是,标记-清除算法不需要运行环境监测每一次内存分配和指针操作,而只要在“标记”阶段中跟踪每一个指针变量的指向——用类似思路实现的垃圾收集器也常被后人统称为跟踪收集器( Tracing Collector )
伴随着 Lisp 语言的成功,标记-清除算法也在大多数早期的 Lisp 运行环境中大放异彩。尽管最初版本的标记-清除算法在今天看来还存在效率不高(标记和清除是两个相当耗时的过程)等诸多缺陷,但在后面的讨论中,我们可以看到,几乎所有现代垃圾收集算法都是标记-清除思想的延续,仅此一点, J. McCarthy 等人在垃圾收集技术方面的贡献就丝毫不亚于他们在 Lisp 语言上的成就了。
午餐过程中,餐厅里的所有人都根据自己的需要取用餐巾纸。当垃圾收集机器人想收集废旧餐巾纸的时候,它会让所有用餐的人先停下来,然后,依次询问餐厅里的每一个人:“你正在用餐巾纸吗?你用的是哪一张餐巾纸?”机器人根据每个人的回答将人们正在使用的餐巾纸画上记号。询问过程结束后,机器人在餐厅里寻找所有散落在餐桌上且没有记号的餐巾纸(这些显然都是用过的废旧餐巾纸),把它们统统扔到垃圾箱里。
正如其名称所暗示的那样,标记-清除算法的执行过程分为“标记”和“清除”两大阶段。这种分步执行的思路奠定了现代垃圾收集算法的思想基础。与引用计数算法不同的是,标记-清除算法不需要运行环境监测每一次内存分配和指针操作,而只要在“标记”阶段中跟踪每一个指针变量的指向——用类似思路实现的垃圾收集器也常被后人统称为跟踪收集器( Tracing Collector )
伴随着 Lisp 语言的成功,标记-清除算法也在大多数早期的 Lisp 运行环境中大放异彩。尽管最初版本的标记-清除算法在今天看来还存在效率不高(标记和清除是两个相当耗时的过程)等诸多缺陷,但在后面的讨论中,我们可以看到,几乎所有现代垃圾收集算法都是标记-清除思想的延续,仅此一点, J. McCarthy 等人在垃圾收集技术方面的贡献就丝毫不亚于他们在 Lisp 语言上的成就了。
- 标记-清除( Mark-Sweep )算法
- 各种垃圾回收算法(二)标记-清除( Mark-Sweep )算法
- CMS(Concurrent Mark Sweep,并行标记-清除)收集器
- Mark-Sweep算法
- Garbage Collection | Mark-Sweep算法
- (转)标记-清除算法
- CMS(Concurrent Mark Sweep)收集器
- 使用mark-sweep算法的垃圾回收器
- GC mark and sweep
- 标记-清除算法
- 标记 - 清除算法
- GC_2_标记-清除算法
- JVM垃圾收集算法(标记-清除、复制、标记-整理)
- 各种算法-标记-压缩(Mark-Compact)自适应
- Mark-and-Sweep Garbage Collection
- mark-and-sweep garbage collection
- Mark-and-Sweep Garbage Collection
- Mark-and-Sweep Garbage Collection
- TextView中显示不同颜色的文字和图片
- C#的事件机制
- C#技术漫谈之垃圾回收机制(GC)
- 最简单的三层架构实例.net版
- EditText 里面插入图片
- 标记-清除( Mark-Sweep )算法
- 服务器如何跟多个客户端进行通讯呢?
- 三国志12试玩版心得
- 置业提醒:买新房时看清“五证两书”
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- StringBuffer类 详解
- System类 详解
- c# WinForm开发 有关DataGridView控件数据库连接(存储和删除)的操作
- 非阻塞通讯(1)