5.3 内存分配与垃圾回收

5.3 内存分配与垃圾回收
   在5.4部分中,我们将展示如何用一个寄存器机器实现一个SCHEME解释器。
为了简化讨论,我们假定我们的寄存器机器有一个列表结构的内存,而且
操作列表结构的基本操作是原生的。当我们聚焦于在一个SCHEME解释器中的控制机制时,
假定如此的内存的存在是一个有用的抽象。但这并不影响到一个实际计算机的实际的
原生的数据操作的现实的视角。为了获得一个更完整的LISP系统如何工作的图景,
我们必须调查研究列表结构如何以一种与传统的计算机内存兼容的方式被表示出来。

在实现列表结构的过程中,这有两点注意事项。一是纯粹的表示问题:在仅使用传统的
计算机的内存的存储与地址引用的能力的情况下,如何表示LISP键值对的盒子与指针
的结构。第二个问题是为了计算的利益,关注内存的管理。LISP系统的操作关键依赖于
持续创建新的数据对象的能力。这包括了被执行的LISP程序显式创建的对象,也有
解释器本身创建的结构,例如环境变量和实际参数的列表。尽管新的数据对象的常规创建
在拥有无限量的快速地址引用的内存的计算机下是没有问题的,计算机内存仅在有限的大小
内是可用的(更多的只能是遗憾) 。LISP系统提供了一个自动内存分配的方法来支持
有无限内存的假象。当一个数据对象不再需要时,分配给它的内存能自动地回收,并且用于
创建新的数据对象。为了提供这样的内存存储分配机制,有一些技术可用。在这部分我们讨论的
方法叫做垃圾回收。

猜你喜欢

转载自blog.csdn.net/gggwfn1982/article/details/83413008
5.3