堆指的是用于动态(也就是执行程序时)存放对象的内存空间。当mutator 申请存放对象时,所需的内存空间就会从这个堆中被分配给mutator。 GC 是管理堆中已分配对象的机制。在开始执行mutator 前,GC 要分配用于堆的内存空间。一旦开始执行mutator,程序就会按照mutator 的要求在堆中存放对象。等到堆被对象占满后,GC 就会启动,从而分配可用空间。如果不能分配足够的可用空间,一般情况下我们就要扩大堆。 然而,为了让读者能更容易理解,在“算法篇”中我们把堆的大小固定为常量HEAP_SIZE,不会进行扩大。此外,我们把$heap_start 定为指向堆首地址的指针,把$heap_end定为指向堆末尾下一个地址的指针。也就是说,$heap_end 等于$heap_start + HEAP_SIZE。 此外,本书中将如图所示的堆的左侧设为内存的低地址,右侧设为高地址。 HEAP_SIZE、$heap_start 和$heap_end 的关系如图1.3 所示。 图1.3 堆
垃圾回收的算法与实现——1.4 堆
书名: 垃圾回收的算法与实现
作者: 中村成洋 | 相川光
出版社: 人民邮电出版社
原作名: ガベージコレクションのアルゴリズムと実装
译者: 丁灵 | 相川光
页数: 456
定价: 99.00元
装帧: 平装
ISBN: 9787115427472