前言

由于高速缓存对性能的影响至关重要,所以垃圾回收算法必须考虑到局部性问题。越来越多的应用程序已经多线程化,且运行在多核处理器之上,因而我们应当避免内存管理器成为性能瓶颈。另外,垃圾回收器的设计应当充分利用硬件的并行能力。

本文自始至终都密切关注现代硬件所带来的机遇与限制,对局部性问题的考量将贯穿全文。我们默认应用程序可能是多线程的。

尽管本文涵盖了很多更加简单、更加传统的算法,但我们还是花了近一半的篇幅来介绍并行回收、增量回收、并发回收以及实时回收。

我们希望本文能够帮助到对编程语言实现感兴趣的研究生、研究人员和开发人员。对于选修了编程语言、编译器构建、软件工程或操作系统方面高级课程的本科生而言,本文也会有所帮助。

此外,我们希望专业开发人员能够通过本文更加深入地了解垃圾回收面临的相关问题、不同回收器的工作模式,我们相信,与具体的专业知识相结合,开发人员在面对多种垃圾回收方法时,能够更好地进行回收器的选型与配置。由于几乎所有的现代编程语言都提供了垃圾回收机制,所以全面了解这一课题对所有开发者来说都是不可或缺的。

目录

 

主要内容

本文内容总共分为19章的内容给大家介绍垃圾回收算法手册(自动内存管理艺术)。

本文第1章以探讨为什么需要自动内存管理作为开篇,简要介绍了对不同垃圾回收策略进行比较的方法。该章结尾介绍了贯穿全书的抽象记法与伪代码描述方式。

 

接下来的4章详细描述了4种经典的垃圾回收算法,分别是标记-清扫算法、标记-整理算法、复制式回收算法以及引用计数算法。

 

 

 

 

 

 

第6章深入比较了第2~5章所介绍的回收策略与算法,评估了它们各自的优缺点以及在不同情况下的适用性。

 

内存回收策略同样依赖于内存分配策略。第7章介绍了多种不同的内存分配技术,并进一步探究了自动垃圾回收与显式内存管理这两种场景下分配策略的不同之处。

 

前7章假定所有堆中的对象均采用相同的管理策略,但根据许多因素可知这并非一种良好的设计策略。

第8章讨论了为何需要将堆划分为多个不同的空间,以及如何管理这些空间;

 

第9章介绍了最成功的对象管理策略之一:分代垃圾回收;

 

第10章介绍了大对象的管理策略以及其他分区策略。

 

在构建垃圾回收器的过程中,与运行时系统其他部分的对接是最复杂的内容之一。因此第11章用了一整章的篇幅来介绍运行时接口,包括指针查找、能够安全发起垃圾回收的代码位置、读写屏障等。

 

第12章讨论了特定语言相关内容,包括终结机制和弱引用。

 

 

在接下来的章节中,我们将注意力集中在并发环境下。

第13章探讨了现代硬件系统给垃圾回收器的实现者所带来的新机遇与挑战,同时介绍了同步、前进、结束、一致等问题的相关算法。

 

第14章介绍如何在挂起所有应用程序线程的前提下使用多个线程进行垃圾回收。

 

接下来的4章介绍了多种不同种类的并发回收器,它们均放宽了“万物静止”这一要求,其回收过程只需要给用户程序引人十分短暂的停顿。

...

最后,第19章探讨了最富挑战性的课题,即垃圾回收在硬实时系统中的应用。

 

这份【垃圾回收算法手册】共有453页,因为文章内容限制就不给大家做过多的介绍了,所以需要完整版的朋友就可以转发关注小编👇👇👇

本文特色

本文从近年来硬件与软件的发展给垃圾回收所带来的新挑战出发,探讨了这些挑战给高性能垃圾回收器的设计者与实现者所带来的影响。在简单的传统回收算法之外,还涵盖了并行垃圾回收、增量式垃圾回收、并发垃圾回收以及实时垃圾回收。文中还配备了丰富的伪代码与插图,以描述各种算法与概念。

  • 全面讲解并行垃圾回收算法、并发垃圾回收算法以及实时垃圾回收算法。
  • 深入剖析某些垃圾回收领域的棘手问题,包括与运行时系统的接口。
  • 提供在线数据库支持,包含超过2500条垃圾回收相关文献。

感谢大家支持!!希望大家能够好好学习垃圾回收算法~