垃圾回收的算法与实现1.6 分配_垃圾回收的算法与实现1.6 分配试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 算法 > 垃圾回收的算法与实现 > 1.6 分配

垃圾回收的算法与实现——1.6 分配

分配(allocation)指的是在内存空间中分配对象。当mutator 需要新对象时,就会向分配器(allocator)申请一个大小合适的空间。分配器则在堆的可用空间中找寻满足要求的空间,返回给mutator。 像Java 和Ruby 这些配备了GC 的编程语言在生成实例时,会在内部进行分配。另一方面,因为C 语言和C++ 没有配备GC,所以程序员要使用malloc() 函数和new 运算符等进行手动分配。 然而,当堆被所有活动对象占满时,就算运行GC 也无法分配可用空间。这时候我们有以下两种选择。 1. 销毁至今为止的所有计算结果,输出错误信息 2. 扩大堆,分配可用空间 之前在1.4 节中也讲过,为了让本书的“算法篇”更易懂,这里我们选择第1 个选项。我们将在伪代码中用allocation_fail() 函数进行第1 项的处理。 不过,在现实的执行环境中选择第2 项会更贴合实际。因为我们必须尽可能地避免因内存不足造成的程序停止。在内存空间大小没有特殊限制的情况下,应该扩大堆。

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《垃圾回收的算法与实现》其他试读目录

• 1.1 对象/ 头/ 域
• 1.2 指针
• 1.3 mutator
• 1.4 堆
• 1.5 活动对象/ 非活动对象
• 1.6 分配 [当前]
• 1.7 分块
• 1.8 根
• 1.9 评价标准
• 2.1 什么是GC标记- 清除算法