第7章 运行时刻环境
从存储组织、活动记录、非局部访问、堆管理与多类垃圾收集建立运行时对象图;用编译流水线、状态轨迹和等价性验证门交付栈帧时间线、访问链、根集、对象图、屏障与暂停统计
学习目标
- 能说明“第7章 运行时刻环境”如何从存储组织、活动记录、非局部访问、堆管理与多类垃圾收集建立运行时对象图,并区分Pearson英文第二版、中文译本、现代工具和本站重写
- 能先预测“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”会改变哪一个输入、表示、栈/图状态、IR、目标代码或验证结果,再操作三类交互证据
- 能只注入“增量标记期间遗漏写屏障,使新引用对象被错误回收”,定位首个偏离“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”的状态,并从同一快照完成恢复
为什么从这个问题开始
“第7章 运行时刻环境”围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”建立贯穿任务:重放嵌套调用、逃逸对象和一次增量垃圾收集。先写下哪个输入、表示、栈/图状态、IR、目标代码或验证结果会最先变化,再运行参考、故障和恢复路径;运行后补理由不算预测。只有守住“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”并交付栈帧时间线、访问链、根集、对象图、屏障与暂停统计,编译成功、分析收敛、目标码长度或基准加速才构成机制证据。
原版书目、556个正式坐标与访问边界
“第7章 运行时刻环境”以Pearson官方书页核对Alfred V. Aho、Monica S. Lam、Ravi Sethi、Jeffrey D. Ullman著 Compilers: Principles, Techniques, and Tools, Second Edition:英文精装ISBN 9780321486813,2006年版;Pearson明确列出12章与两个附录,并说明第10章“指令级并行”、第11章“并行与局部性优化”、第12章“过程间分析”是第二版新增重点。Pearson官方目录继续核对版本与章/附录框架。
“第7章 运行时刻环境”再以中文版完整目录与高校馆藏书目核对赵建华、郑滔、戴新宇译《编译原理(第2版)》,机械工业出版社,2009年,631页,ISBN 9787111251217。正式分母计入12个章标题、2个附录标题、533个数字编号节/小节和附录A的9个编号节,合计556个核心目录层级;章末总结、练习、参考文献和索引不重复计为知识节点。
原书与译本均受版权保护,“第7章 运行时刻环境”不复制、翻译或改写原文、图表、算法伪码和练习,只把官方目录当作范围坐标;中文讲解、状态轨迹、反例、交互、练习与答案均为独立教学重写。本页独立核对 1只用于核对现代IR、工具或实验边界,不反向证明原书采用本站表述。
原版目录层级与可验证机制
第7章 运行时刻环境
↡运行时刻环境对应正式目录坐标“第7章 运行时刻环境”,在“第7章 运行时刻环境”中用于把“运行时刻环境”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 1/45。 原版目录键 第7章 运行时刻环境。在“第7章 运行时刻环境”的第1个正式坐标中,「第7章 运行时刻环境」通过把“运行时刻环境”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链推进运行时栈、堆、可达性与收集;复核者保存第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据,出现只复述“运行时刻环境”名称而没有可观察状态、单故障和恢复验证就撤回结论。
7·1 存储组织
↡存储组织对应正式目录坐标“7.1 存储组织”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 2/45。 原版目录键 7.1 存储组织。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标2把「7·1 存储组织」落实为追踪栈帧、非局部绑定、根集、堆对象和收集阶段;只有活动记录、访问链、根集、对象图、写屏障与暂停统计可重放且反例排除生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收,本节点才算掌握。
7·1·1 静态存储分配和动态存储分配
↡静态存储分配和动态存储分配对应正式目录坐标“7.1.1 静态存储分配和动态存储分配”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 3/45。 原版目录键 7.1.1 静态存储分配和动态存储分配。“第7章 运行时刻环境”的目录节点3「7·1·1 静态存储分配和动态存储分配」不能停在术语或伪码:它要追踪栈帧、非局部绑定、根集、堆对象和收集阶段,交付活动记录、访问链、根集、对象图、写屏障与暂停统计,并把生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收设为单一反事实。
7·2 栈式存储分配
↡栈式存储分配对应正式目录坐标“7.2 栈式存储分配”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 4/45。 原版目录键 7.2 栈式存储分配。对“第7章 运行时刻环境”而言,「7·2 栈式存储分配」在第4次检查中改变可观察状态,因为它负责追踪栈帧、非局部绑定、根集、堆对象和收集阶段;活动记录、访问链、根集、对象图、写屏障与暂停统计必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收。
7·2·1 活动树
↡活动树对应正式目录坐标“7.2.1 活动树”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 5/45。 原版目录键 7.2.1 活动树。在“第7章 运行时刻环境”的第5个正式坐标中,「7·2·1 活动树」通过追踪栈帧、非局部绑定、根集、堆对象和收集阶段推进运行时栈、堆、可达性与收集;复核者保存活动记录、访问链、根集、对象图、写屏障与暂停统计,出现生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收就撤回结论。
7·2·2 活动记录
↡活动记录对应正式目录坐标“7.2.2 活动记录”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 6/45。 原版目录键 7.2.2 活动记录。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标6把「7·2·2 活动记录」落实为追踪栈帧、非局部绑定、根集、堆对象和收集阶段;只有活动记录、访问链、根集、对象图、写屏障与暂停统计可重放且反例排除生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收,本节点才算掌握。
7·2·3 调用序列
↡调用序列对应正式目录坐标“7.2.3 调用序列”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 7/45。 原版目录键 7.2.3 调用序列。“第7章 运行时刻环境”的目录节点7「7·2·3 调用序列」不能停在术语或伪码:它要追踪栈帧、非局部绑定、根集、堆对象和收集阶段,交付活动记录、访问链、根集、对象图、写屏障与暂停统计,并把生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收设为单一反事实。
7·2·4 栈中的变长数据
↡栈中的变长数据对应正式目录坐标“7.2.4 栈中的变长数据”,在“第7章 运行时刻环境”中用于把“栈中的变长数据”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 8/45。 原版目录键 7.2.4 栈中的变长数据。对“第7章 运行时刻环境”而言,「7·2·4 栈中的变长数据」在第8次检查中改变可观察状态,因为它负责把“栈中的变长数据”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链;第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受只复述“栈中的变长数据”名称而没有可观察状态、单故障和恢复验证。
7·3 栈中非局部数据的访问
↡栈中非局部数据的访问对应正式目录坐标“7.3 栈中非局部数据的访问”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 9/45。 原版目录键 7.3 栈中非局部数据的访问。在“第7章 运行时刻环境”的第9个正式坐标中,「7·3 栈中非局部数据的访问」通过追踪栈帧、非局部绑定、根集、堆对象和收集阶段推进运行时栈、堆、可达性与收集;复核者保存活动记录、访问链、根集、对象图、写屏障与暂停统计,出现生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收就撤回结论。
7·3·1 没有嵌套过程时的数据访问
↡没有嵌套过程时的数据访问对应正式目录坐标“7.3.1 没有嵌套过程时的数据访问”,在“第7章 运行时刻环境”中用于把源级值、地址、类型、控制边和定义—使用关系编码为IR,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 10/45。 原版目录键 7.3.1 没有嵌套过程时的数据访问。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标10把「7·3·1 没有嵌套过程时的数据访问」落实为把源级值、地址、类型、控制边和定义—使用关系编码为IR;只有AST/DAG、类型证明、CFG、SSA链、地址计算与回填列表可重放且反例排除类型、phi输入、控制边、地址或定义—使用关系错位,本节点才算掌握。
7·3·2 和嵌套过程相关的问题
↡和嵌套过程相关的问题对应正式目录坐标“7.3.2 和嵌套过程相关的问题”,在“第7章 运行时刻环境”中用于把源级值、地址、类型、控制边和定义—使用关系编码为IR,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 11/45。 原版目录键 7.3.2 和嵌套过程相关的问题。“第7章 运行时刻环境”的目录节点11「7·3·2 和嵌套过程相关的问题」不能停在术语或伪码:它要把源级值、地址、类型、控制边和定义—使用关系编码为IR,交付AST/DAG、类型证明、CFG、SSA链、地址计算与回填列表,并把类型、phi输入、控制边、地址或定义—使用关系错位设为单一反事实。
7·3·3 一个支持嵌套过程声明的语言
↡一个支持嵌套过程声明的语言对应正式目录坐标“7.3.3 一个支持嵌套过程声明的语言”,在“第7章 运行时刻环境”中用于把源级值、地址、类型、控制边和定义—使用关系编码为IR,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 12/45。 原版目录键 7.3.3 一个支持嵌套过程声明的语言。对“第7章 运行时刻环境”而言,「7·3·3 一个支持嵌套过程声明的语言」在第12次检查中改变可观察状态,因为它负责把源级值、地址、类型、控制边和定义—使用关系编码为IR;AST/DAG、类型证明、CFG、SSA链、地址计算与回填列表必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受类型、phi输入、控制边、地址或定义—使用关系错位。
7·3·4 嵌套深度
↡嵌套深度对应正式目录坐标“7.3.4 嵌套深度”,在“第7章 运行时刻环境”中用于把“嵌套深度”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 13/45。 原版目录键 7.3.4 嵌套深度。在“第7章 运行时刻环境”的第13个正式坐标中,「7·3·4 嵌套深度」通过把“嵌套深度”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链推进运行时栈、堆、可达性与收集;复核者保存第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据,出现只复述“嵌套深度”名称而没有可观察状态、单故障和恢复验证就撤回结论。
7·3·5 访问链
↡访问链对应正式目录坐标“7.3.5 访问链”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 14/45。 原版目录键 7.3.5 访问链。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标14把「7·3·5 访问链」落实为追踪栈帧、非局部绑定、根集、堆对象和收集阶段;只有活动记录、访问链、根集、对象图、写屏障与暂停统计可重放且反例排除生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收,本节点才算掌握。
7·3·6 访问链的维护
↡访问链的维护对应正式目录坐标“7.3.6 访问链的维护”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 15/45。 原版目录键 7.3.6 访问链的维护。“第7章 运行时刻环境”的目录节点15「7·3·6 访问链的维护」不能停在术语或伪码:它要追踪栈帧、非局部绑定、根集、堆对象和收集阶段,交付活动记录、访问链、根集、对象图、写屏障与暂停统计,并把生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收设为单一反事实。
7·3·7 过程参数的访问链
↡过程参数的访问链对应正式目录坐标“7.3.7 过程参数的访问链”,在“第7章 运行时刻环境”中用于声明阶段接口、名字/类型/状态角色和源—目标语义映射,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 16/45。 原版目录键 7.3.7 过程参数的访问链。对“第7章 运行时刻环境”而言,「7·3·7 过程参数的访问链」在第16次检查中改变可观察状态,因为它负责声明阶段接口、名字/类型/状态角色和源—目标语义映射;阶段快照、符号表、类型、IR谱系、诊断和源位置必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受阶段边界丢失绑定、类型、控制依赖或源位置。
7·3·8 display表
↡display表对应正式目录坐标“7.3.8 display表”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 17/45。 原版目录键 7.3.8 display表。在“第7章 运行时刻环境”的第17个正式坐标中,「7·3·8 display表」通过追踪栈帧、非局部绑定、根集、堆对象和收集阶段推进运行时栈、堆、可达性与收集;复核者保存活动记录、访问链、根集、对象图、写屏障与暂停统计,出现生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收就撤回结论。
7·4 堆管理
↡堆管理对应正式目录坐标“7.4 堆管理”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 18/45。 原版目录键 7.4 堆管理。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标18把「7·4 堆管理」落实为追踪栈帧、非局部绑定、根集、堆对象和收集阶段;只有活动记录、访问链、根集、对象图、写屏障与暂停统计可重放且反例排除生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收,本节点才算掌握。
7·4·1 存储管理器
↡存储管理器对应正式目录坐标“7.4.1 存储管理器”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 19/45。 原版目录键 7.4.1 存储管理器。“第7章 运行时刻环境”的目录节点19「7·4·1 存储管理器」不能停在术语或伪码:它要追踪栈帧、非局部绑定、根集、堆对象和收集阶段,交付活动记录、访问链、根集、对象图、写屏障与暂停统计,并把生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收设为单一反事实。
7·4·2 计算机的存储层次结构
↡计算机的存储层次结构对应正式目录坐标“7.4.2 计算机的存储层次结构”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 20/45。 原版目录键 7.4.2 计算机的存储层次结构。对“第7章 运行时刻环境”而言,「7·4·2 计算机的存储层次结构」在第20次检查中改变可观察状态,因为它负责追踪栈帧、非局部绑定、根集、堆对象和收集阶段;活动记录、访问链、根集、对象图、写屏障与暂停统计必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收。
7·4·3 程序中的局部性
↡程序中的局部性对应正式目录坐标“7.4.3 程序中的局部性”,在“第7章 运行时刻环境”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 21/45。 原版目录键 7.4.3 程序中的局部性。在“第7章 运行时刻环境”的第21个正式坐标中,「7·4·3 程序中的局部性」通过以迭代域、访问关系和依赖约束证明循环变换、并行与局部性推进运行时栈、堆、可达性与收集;复核者保存迭代空间、依赖关系、调度、缓存复用、同步与边界测试,出现变换违反跨迭代依赖或只在样例尺寸上偶然正确就撤回结论。
7·4·4 减少碎片
↡减少碎片对应正式目录坐标“7.4.4 减少碎片”,在“第7章 运行时刻环境”中用于把“减少碎片”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 22/45。 原版目录键 7.4.4 减少碎片。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标22把「7·4·4 减少碎片」落实为把“减少碎片”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链;只有第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“减少碎片”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。
7·4·5 手工回收请求
↡手工回收请求对应正式目录坐标“7.4.5 手工回收请求”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 23/45。 原版目录键 7.4.5 手工回收请求。“第7章 运行时刻环境”的目录节点23「7·4·5 手工回收请求」不能停在术语或伪码:它要追踪栈帧、非局部绑定、根集、堆对象和收集阶段,交付活动记录、访问链、根集、对象图、写屏障与暂停统计,并把生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收设为单一反事实。
7·5 垃圾回收概述
↡垃圾回收概述对应正式目录坐标“7.5 垃圾回收概述”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 24/45。 原版目录键 7.5 垃圾回收概述。对“第7章 运行时刻环境”而言,「7·5 垃圾回收概述」在第24次检查中改变可观察状态,因为它负责追踪栈帧、非局部绑定、根集、堆对象和收集阶段;活动记录、访问链、根集、对象图、写屏障与暂停统计必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收。
7·5·1 垃圾回收器的设计目标
↡垃圾回收器的设计目标对应正式目录坐标“7.5.1 垃圾回收器的设计目标”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 25/45。 原版目录键 7.5.1 垃圾回收器的设计目标。在“第7章 运行时刻环境”的第25个正式坐标中,「7·5·1 垃圾回收器的设计目标」通过追踪栈帧、非局部绑定、根集、堆对象和收集阶段推进运行时栈、堆、可达性与收集;复核者保存活动记录、访问链、根集、对象图、写屏障与暂停统计,出现生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收就撤回结论。
7·5·2 可达性
↡可达性对应正式目录坐标“7.5.2 可达性”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 26/45。 原版目录键 7.5.2 可达性。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标26把「7·5·2 可达性」落实为追踪栈帧、非局部绑定、根集、堆对象和收集阶段;只有活动记录、访问链、根集、对象图、写屏障与暂停统计可重放且反例排除生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收,本节点才算掌握。
7·5·3 引用计数垃圾回收器
↡引用计数垃圾回收器对应正式目录坐标“7.5.3 引用计数垃圾回收器”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 27/45。 原版目录键 7.5.3 引用计数垃圾回收器。“第7章 运行时刻环境”的目录节点27「7·5·3 引用计数垃圾回收器」不能停在术语或伪码:它要追踪栈帧、非局部绑定、根集、堆对象和收集阶段,交付活动记录、访问链、根集、对象图、写屏障与暂停统计,并把生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收设为单一反事实。
7·6 基于跟踪的回收技术介绍
↡基于跟踪的回收技术介绍对应正式目录坐标“7.6 基于跟踪的回收技术介绍”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 28/45。 原版目录键 7.6 基于跟踪的回收技术介绍。对“第7章 运行时刻环境”而言,「7·6 基于跟踪的回收技术介绍」在第28次检查中改变可观察状态,因为它负责追踪栈帧、非局部绑定、根集、堆对象和收集阶段;活动记录、访问链、根集、对象图、写屏障与暂停统计必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收。
7·6·1 一个基本的标记-清扫式回收器
↡一个基本的标记-清扫式回收器对应正式目录坐标“7.6.1 一个基本的标记-清扫式回收器”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 29/45。 原版目录键 7.6.1 一个基本的标记-清扫式回收器。在“第7章 运行时刻环境”的第29个正式坐标中,「7·6·1 一个基本的标记-清扫式回收器」通过追踪栈帧、非局部绑定、根集、堆对象和收集阶段推进运行时栈、堆、可达性与收集;复核者保存活动记录、访问链、根集、对象图、写屏障与暂停统计,出现生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收就撤回结论。
7·6·2 基本抽象
↡基本抽象对应正式目录坐标“7.6.2 基本抽象”,在“第7章 运行时刻环境”中用于把“基本抽象”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 30/45。 原版目录键 7.6.2 基本抽象。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标30把「7·6·2 基本抽象」落实为把“基本抽象”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链;只有第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“基本抽象”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。
7·6·3 标记-清扫算法的优化
↡标记-清扫算法的优化对应正式目录坐标“7.6.3 标记-清扫算法的优化”,在“第7章 运行时刻环境”中用于声明阶段接口、名字/类型/状态角色和源—目标语义映射,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 31/45。 原版目录键 7.6.3 标记-清扫算法的优化。“第7章 运行时刻环境”的目录节点31「7·6·3 标记-清扫算法的优化」不能停在术语或伪码:它要声明阶段接口、名字/类型/状态角色和源—目标语义映射,交付阶段快照、符号表、类型、IR谱系、诊断和源位置,并把阶段边界丢失绑定、类型、控制依赖或源位置设为单一反事实。
7·6·4 标记-压缩式垃圾回收器
↡标记-压缩式垃圾回收器对应正式目录坐标“7.6.4 标记-压缩式垃圾回收器”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 32/45。 原版目录键 7.6.4 标记-压缩式垃圾回收器。对“第7章 运行时刻环境”而言,「7·6·4 标记-压缩式垃圾回收器」在第32次检查中改变可观察状态,因为它负责追踪栈帧、非局部绑定、根集、堆对象和收集阶段;活动记录、访问链、根集、对象图、写屏障与暂停统计必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收。
7·6·5 拷贝式垃圾回收器
↡拷贝式垃圾回收器对应正式目录坐标“7.6.5 拷贝式垃圾回收器”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 33/45。 原版目录键 7.6.5 拷贝式垃圾回收器。在“第7章 运行时刻环境”的第33个正式坐标中,「7·6·5 拷贝式垃圾回收器」通过追踪栈帧、非局部绑定、根集、堆对象和收集阶段推进运行时栈、堆、可达性与收集;复核者保存活动记录、访问链、根集、对象图、写屏障与暂停统计,出现生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收就撤回结论。
7·6·6 代价的比较
↡代价的比较对应正式目录坐标“7.6.6 代价的比较”,在“第7章 运行时刻环境”中用于把“代价的比较”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 34/45。 原版目录键 7.6.6 代价的比较。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标34把「7·6·6 代价的比较」落实为把“代价的比较”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链;只有第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“代价的比较”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。
7·7 短停顿垃圾回收
↡短停顿垃圾回收对应正式目录坐标“7.7 短停顿垃圾回收”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 35/45。 原版目录键 7.7 短停顿垃圾回收。“第7章 运行时刻环境”的目录节点35「7·7 短停顿垃圾回收」不能停在术语或伪码:它要追踪栈帧、非局部绑定、根集、堆对象和收集阶段,交付活动记录、访问链、根集、对象图、写屏障与暂停统计,并把生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收设为单一反事实。
7·7·1 增量式垃圾回收
↡增量式垃圾回收对应正式目录坐标“7.7.1 增量式垃圾回收”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 36/45。 原版目录键 7.7.1 增量式垃圾回收。对“第7章 运行时刻环境”而言,「7·7·1 增量式垃圾回收」在第36次检查中改变可观察状态,因为它负责追踪栈帧、非局部绑定、根集、堆对象和收集阶段;活动记录、访问链、根集、对象图、写屏障与暂停统计必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收。
7·7·2 增量式可达性分析
↡增量式可达性分析对应正式目录坐标“7.7.2 增量式可达性分析”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 37/45。 原版目录键 7.7.2 增量式可达性分析。在“第7章 运行时刻环境”的第37个正式坐标中,「7·7·2 增量式可达性分析」通过追踪栈帧、非局部绑定、根集、堆对象和收集阶段推进运行时栈、堆、可达性与收集;复核者保存活动记录、访问链、根集、对象图、写屏障与暂停统计,出现生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收就撤回结论。
7·7·3 部分回收基础
↡部分回收基础对应正式目录坐标“7.7.3 部分回收基础”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 38/45。 原版目录键 7.7.3 部分回收基础。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标38把「7·7·3 部分回收基础」落实为追踪栈帧、非局部绑定、根集、堆对象和收集阶段;只有活动记录、访问链、根集、对象图、写屏障与暂停统计可重放且反例排除生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收,本节点才算掌握。
7·7·4 分代垃圾回收
↡分代垃圾回收对应正式目录坐标“7.7.4 分代垃圾回收”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 39/45。 原版目录键 7.7.4 分代垃圾回收。“第7章 运行时刻环境”的目录节点39「7·7·4 分代垃圾回收」不能停在术语或伪码:它要追踪栈帧、非局部绑定、根集、堆对象和收集阶段,交付活动记录、访问链、根集、对象图、写屏障与暂停统计,并把生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收设为单一反事实。
7·7·5 火车算法
↡火车算法对应正式目录坐标“7.7.5 火车算法”,在“第7章 运行时刻环境”中用于把“火车算法”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 40/45。 原版目录键 7.7.5 火车算法。对“第7章 运行时刻环境”而言,「7·7·5 火车算法」在第40次检查中改变可观察状态,因为它负责把“火车算法”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链;第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受只复述“火车算法”名称而没有可观察状态、单故障和恢复验证。
7·8 垃圾回收高级主题
↡垃圾回收高级主题对应正式目录坐标“7.8 垃圾回收高级主题”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 41/45。 原版目录键 7.8 垃圾回收高级主题。在“第7章 运行时刻环境”的第41个正式坐标中,「7·8 垃圾回收高级主题」通过追踪栈帧、非局部绑定、根集、堆对象和收集阶段推进运行时栈、堆、可达性与收集;复核者保存活动记录、访问链、根集、对象图、写屏障与暂停统计,出现生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收就撤回结论。
7·8·1 并行和并发垃圾回收
↡并行和并发垃圾回收对应正式目录坐标“7.8.1 并行和并发垃圾回收”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 42/45。 原版目录键 7.8.1 并行和并发垃圾回收。围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”,“第7章 运行时刻环境”在坐标42把「7·8·1 并行和并发垃圾回收」落实为追踪栈帧、非局部绑定、根集、堆对象和收集阶段;只有活动记录、访问链、根集、对象图、写屏障与暂停统计可重放且反例排除生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收,本节点才算掌握。
7·8·2 对象的部分迁移
↡对象的部分迁移对应正式目录坐标“7.8.2 对象的部分迁移”,在“第7章 运行时刻环境”中用于把“对象的部分迁移”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 43/45。 原版目录键 7.8.2 对象的部分迁移。“第7章 运行时刻环境”的目录节点43「7·8·2 对象的部分迁移」不能停在术语或伪码:它要把“对象的部分迁移”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,交付第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据,并把只复述“对象的部分迁移”名称而没有可观察状态、单故障和恢复验证设为单一反事实。
7·8·3 不安全语言的保守式垃圾回收
↡不安全语言的保守式垃圾回收对应正式目录坐标“7.8.3 不安全语言的保守式垃圾回收”,在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 44/45。 原版目录键 7.8.3 不安全语言的保守式垃圾回收。对“第7章 运行时刻环境”而言,「7·8·3 不安全语言的保守式垃圾回收」在第44次检查中改变可观察状态,因为它负责追踪栈帧、非局部绑定、根集、堆对象和收集阶段;活动记录、访问链、根集、对象图、写屏障与暂停统计必须与“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”对齐,不能接受生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收。
7·8·4 弱引用
↡弱引用对应正式目录坐标“7.8.4 弱引用”,在“第7章 运行时刻环境”中用于把“弱引用”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,并受源程序、表示、规则、目标机、代价与验证边界约束。正式坐标 45/45。 原版目录键 7.8.4 弱引用。在“第7章 运行时刻环境”的第45个正式坐标中,「7·8·4 弱引用」通过把“弱引用”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链推进运行时栈、堆、可达性与收集;复核者保存第7章 运行时刻环境的输入角色、中间状态、输出、反例与等价性证据,出现只复述“弱引用”名称而没有可观察状态、单故障和恢复验证就撤回结论。
先预测,再操作三个章专属实验
1. 输入、表示与翻译流水线
为“第7章 运行时刻环境”选择正式目录坐标,在参考流水线与单一故障间切换,逐阶段核对输入、变换、输出和不变量。
输入—表示—翻译流水线
第7章 运行时刻环境
选择正式目录坐标,再比较参考编译合同与单一故障的首个状态分岔。
阶段 1/4
第7章 运行时刻环境 · 输入与表示
- 输入
- 重放嵌套调用、逃逸对象和一次增量垃圾收集
- 变换
- 冻结运行时栈、堆、可达性与收集所需的源程序、文法/IR/机器版本、shape和符号角色
- 输出证据
- 第7章 运行时刻环境的输入合同、版本表与基线快照
- 不变量检查
- 第7章 运行时刻环境的源位置、名字、类型、控制/数据依赖和可见性没有越界
第7章 运行时刻环境的可重放协议
| 阶段 | 允许动作 | 必留证据 | 拒绝条件 |
|---|---|---|---|
| 第7章 运行时刻环境 · 输入与表示 | 冻结运行时栈、堆、可达性与收集所需的源程序、文法/IR/机器版本、shape和符号角色 | 第7章 运行时刻环境的输入合同、版本表与基线快照 | 未满足“第7章 运行时刻环境的源位置、名字、类型、控制/数据依赖和可见性没有越界” |
| 第7章 运行时刻环境 · 状态变换 | 执行从存储组织、活动记录、非局部访问、堆管理与多类垃圾收集建立运行时对象图的最小算法并保存每一步状态 | 第7章 运行时刻环境的参考轨迹、故障轨迹与首个状态分岔 | 未满足“第7章 运行时刻环境每一步可由同一输入、规则、版本和顺序复算” |
| 第7章 运行时刻环境 · 输出与代价 | 比较变换前后IR/目标状态、诊断、资源或分析精度 | 第7章 运行时刻环境的前后差、语义映射、代价和恢复路径 | 未满足“第7章 运行时刻环境没有把编译成功、分析收敛或单一基准加速当作完整正确性” |
| 第7章 运行时刻环境 · 独立验证 | 重放预测、单故障、恢复和不适用边界 | 第7章 运行时刻环境的接受、回退或拒绝理由 | 未满足“第7章 运行时刻环境满足“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”” |
unit: "dbc-unit-07"
question: "调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?"
scenario: "重放嵌套调用、逃逸对象和一次增量垃圾收集"
invariant: "活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致"
fault: "增量标记期间遗漏写屏障,使新引用对象被错误回收"
evidence: "栈帧时间线、访问链、根集、对象图、屏障与暂停统计"
reset: restore_concept_mode_stage_trace_step_case_gates_and_artifact“第7章 运行时刻环境”要求从同一源程序、文法/IR/机器版本、规则、预算和执行顺序重放参考、故障与恢复路径。重置后若目录选择、模式、阶段、轨迹步骤、案例、证据门或交付包没有回到基线,本次比较已经混入状态泄漏。
本页回顾
掌握“第7章 运行时刻环境”不是背术语、表格或伪码,而是围绕“调用、返回、闭包、堆对象和收集器怎样共同维护可达性与生命周期?”重建输入、表示、状态变换、输出、代价和独立验证,并用“活动记录、静态/动态链、根集、对象图、写屏障和回收阶段一致”拒绝“增量标记期间遗漏写屏障,使新引用对象被错误回收”。最终交付为栈帧时间线、访问链、根集、对象图、屏障与暂停统计。
练习与答案
练习
- 问题 1:编译合同。 “第7章 运行时刻环境”为什么必须先冻结源程序、文法/IR/机器版本、规则、预算和验证口径?
- 问题 2:目录逐项覆盖。 怎样证明“第7章 运行时刻环境”的正式目录坐标已经进入机制、交互和练习?
- 问题 3:故障恢复。 怎样证明“增量标记期间遗漏写屏障,使新引用对象被错误回收”已经被修正?
名词解释
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 运行时刻环境
检索键 dbc-A 对应正式目录坐标「第7章 运行时刻环境」;在“第7章 运行时刻环境”中用于把“运行时刻环境”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 存储组织
检索键 dbc-B 对应正式目录坐标「7·1 存储组织」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 静态存储分配和动态存储分配
检索键 dbc-C 对应正式目录坐标「7·1·1 静态存储分配和动态存储分配」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 栈式存储分配
检索键 dbc-D 对应正式目录坐标「7·2 栈式存储分配」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 活动树
检索键 dbc-E 对应正式目录坐标「7·2·1 活动树」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 活动记录
检索键 dbc-F 对应正式目录坐标「7·2·2 活动记录」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 调用序列
检索键 dbc-G 对应正式目录坐标「7·2·3 调用序列」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 栈中的变长数据
检索键 dbc-H 对应正式目录坐标「7·2·4 栈中的变长数据」;在“第7章 运行时刻环境”中用于把“栈中的变长数据”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 栈中非局部数据的访问
检索键 dbc-I 对应正式目录坐标「7·3 栈中非局部数据的访问」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 没有嵌套过程时的数据访问
检索键 dbc-J 对应正式目录坐标「7·3·1 没有嵌套过程时的数据访问」;在“第7章 运行时刻环境”中用于把源级值、地址、类型、控制边和定义—使用关系编码为IR,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 和嵌套过程相关的问题
检索键 dbc-K 对应正式目录坐标「7·3·2 和嵌套过程相关的问题」;在“第7章 运行时刻环境”中用于把源级值、地址、类型、控制边和定义—使用关系编码为IR,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 一个支持嵌套过程声明的语言
检索键 dbc-L 对应正式目录坐标「7·3·3 一个支持嵌套过程声明的语言」;在“第7章 运行时刻环境”中用于把源级值、地址、类型、控制边和定义—使用关系编码为IR,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 嵌套深度
检索键 dbc-M 对应正式目录坐标「7·3·4 嵌套深度」;在“第7章 运行时刻环境”中用于把“嵌套深度”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 访问链
检索键 dbc-N 对应正式目录坐标「7·3·5 访问链」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 访问链的维护
检索键 dbc-O 对应正式目录坐标「7·3·6 访问链的维护」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 过程参数的访问链
检索键 dbc-P 对应正式目录坐标「7·3·7 过程参数的访问链」;在“第7章 运行时刻环境”中用于声明阶段接口、名字/类型/状态角色和源—目标语义映射,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- display表
检索键 dbc-Q 对应正式目录坐标「7·3·8 display表」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 堆管理
检索键 dbc-R 对应正式目录坐标「7·4 堆管理」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 存储管理器
检索键 dbc-S 对应正式目录坐标「7·4·1 存储管理器」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 计算机的存储层次结构
检索键 dbc-T 对应正式目录坐标「7·4·2 计算机的存储层次结构」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 程序中的局部性
检索键 dbc-U 对应正式目录坐标「7·4·3 程序中的局部性」;在“第7章 运行时刻环境”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 减少碎片
检索键 dbc-V 对应正式目录坐标「7·4·4 减少碎片」;在“第7章 运行时刻环境”中用于把“减少碎片”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 手工回收请求
检索键 dbc-W 对应正式目录坐标「7·4·5 手工回收请求」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 垃圾回收概述
检索键 dbc-X 对应正式目录坐标「7·5 垃圾回收概述」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 垃圾回收器的设计目标
检索键 dbc-Y 对应正式目录坐标「7·5·1 垃圾回收器的设计目标」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 可达性
检索键 dbc-Z 对应正式目录坐标「7·5·2 可达性」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 引用计数垃圾回收器
检索键 dbc-AA 对应正式目录坐标「7·5·3 引用计数垃圾回收器」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 基于跟踪的回收技术介绍
检索键 dbc-AB 对应正式目录坐标「7·6 基于跟踪的回收技术介绍」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 一个基本的标记-清扫式回收器
检索键 dbc-AC 对应正式目录坐标「7·6·1 一个基本的标记-清扫式回收器」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 基本抽象
检索键 dbc-AD 对应正式目录坐标「7·6·2 基本抽象」;在“第7章 运行时刻环境”中用于把“基本抽象”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 标记-清扫算法的优化
检索键 dbc-AE 对应正式目录坐标「7·6·3 标记-清扫算法的优化」;在“第7章 运行时刻环境”中用于声明阶段接口、名字/类型/状态角色和源—目标语义映射,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 标记-压缩式垃圾回收器
检索键 dbc-AF 对应正式目录坐标「7·6·4 标记-压缩式垃圾回收器」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 拷贝式垃圾回收器
检索键 dbc-AG 对应正式目录坐标「7·6·5 拷贝式垃圾回收器」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 代价的比较
检索键 dbc-AH 对应正式目录坐标「7·6·6 代价的比较」;在“第7章 运行时刻环境”中用于把“代价的比较”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 短停顿垃圾回收
检索键 dbc-AI 对应正式目录坐标「7·7 短停顿垃圾回收」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 增量式垃圾回收
检索键 dbc-AJ 对应正式目录坐标「7·7·1 增量式垃圾回收」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 增量式可达性分析
检索键 dbc-AK 对应正式目录坐标「7·7·2 增量式可达性分析」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 部分回收基础
检索键 dbc-AL 对应正式目录坐标「7·7·3 部分回收基础」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 分代垃圾回收
检索键 dbc-AM 对应正式目录坐标「7·7·4 分代垃圾回收」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 火车算法
检索键 dbc-AN 对应正式目录坐标「7·7·5 火车算法」;在“第7章 运行时刻环境”中用于把“火车算法”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 垃圾回收高级主题
检索键 dbc-AO 对应正式目录坐标「7·8 垃圾回收高级主题」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 并行和并发垃圾回收
检索键 dbc-AP 对应正式目录坐标「7·8·1 并行和并发垃圾回收」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 对象的部分迁移
检索键 dbc-AQ 对应正式目录坐标「7·8·2 对象的部分迁移」;在“第7章 运行时刻环境”中用于把“对象的部分迁移”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 不安全语言的保守式垃圾回收
检索键 dbc-AR 对应正式目录坐标「7·8·3 不安全语言的保守式垃圾回收」;在“第7章 运行时刻环境”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。
- 弱引用
检索键 dbc-AS 对应正式目录坐标「7·8·4 弱引用」;在“第7章 运行时刻环境”中用于把“弱引用”放进运行时栈、堆、可达性与收集的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。