返回题库高级 .NET 刷题.NET 运行时选择题 · 第 6 / 8 篇

.NET 运行时试题 06:GC 代际、LOH、POH 与固定对象

101 关于代际回收,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. 对象只要创建超过固定秒数就自动进入下一代
  • B. 对象晋升表示经历回收后仍存活,不等同业务上的长期缓存
  • C. GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代
  • D. 只要观察到“短命请求对象大量进入 Gen 1”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析

正确答案C

正确项给出了代际回收可直接依赖的规则:“GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代”。“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”是应用规则前必须确认的边界,不是规则本身;“对象只要创建超过固定秒数就自动进入下一代”则把常见现象或实现细节扩大成了平台保证。场景“短命请求对象大量进入 Gen 1”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

102 生产环境出现“短命请求对象大量进入 Gen 1”时,针对代际回收应如何排查?

难度: 进阶

  • A. 先验证“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”,再使用运行时指标、日志或最小复现检查“GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代”是否成立。
  • B. 直接采用“对象只要创建超过固定秒数就自动进入下一代”解释现象,不再收集目标进程和发布配置证据。
  • C. 只增加机器资源或重启进程,以一次恢复结果代替对“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”的验证。
  • D. 只检查代码是否能够编译,通过后便认定“GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代”在当前部署中必然成立。
查看答案与解析

正确答案A

“短命请求对象大量进入 Gen 1”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”,再以“GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代”组织证据。采用误区“对象只要创建超过固定秒数就自动进入下一代”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

103 评审代际回收相关实现时,以下哪项判断不成立?

难度: 实战

  • A. GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代
  • B. 对象只要创建超过固定秒数就自动进入下一代
  • C. 对象晋升表示经历回收后仍存活,不等同业务上的长期缓存
  • D. 遇到“短命请求对象大量进入 Gen 1”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析

正确答案B

题目要求找出不成立的判断,“对象只要创建超过固定秒数就自动进入下一代”正是代际回收的典型误区。主规则“GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代”描述了实现应依赖的契约,边界“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

104 准备上线涉及代际回收的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“对象只要创建超过固定秒数就自动进入下一代”完成修改,只要本地运行一次成功就立即发布。
  • B. 按照“GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代”修改代码,但不核对“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”或目标发布模式。
  • C. 只验证“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”,实现仍继续依赖“对象只要创建超过固定秒数就自动进入下一代”这一未经证明的假设。
  • D. 依据“GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代”实现,在“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”成立的环境中验证,并为“短命请求对象大量进入 Gen 1”保留可观测证据和回退条件。
查看答案与解析

正确答案D

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“GC 根据大多数对象短命的经验把托管堆划分代际,并可优先回收较年轻代”,部署环境满足“对象晋升表示经历回收后仍存活,不等同业务上的长期缓存”,并能在“短命请求对象大量进入 Gen 1”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

105 关于大对象堆,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. LOH 上的对象永远不会被回收
  • B. 阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准
  • C. 只要观察到“大数组反复分配导致高代 GC 增多”,就能把这次现象视为所有环境中的固定行为。
  • D. 达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理
查看答案与解析

正确答案D

正确项给出了大对象堆可直接依赖的规则:“达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理”。“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”是应用规则前必须确认的边界,不是规则本身;“LOH 上的对象永远不会被回收”则把常见现象或实现细节扩大成了平台保证。场景“大数组反复分配导致高代 GC 增多”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

106 生产环境出现“大数组反复分配导致高代 GC 增多”时,针对大对象堆应如何排查?

难度: 进阶

  • A. 先验证“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”,再使用运行时指标、日志或最小复现检查“达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理”是否成立。
  • B. 直接采用“LOH 上的对象永远不会被回收”解释现象,不再收集目标进程和发布配置证据。
  • C. 只增加机器资源或重启进程,以一次恢复结果代替对“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”的验证。
  • D. 只检查代码是否能够编译,通过后便认定“达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理”在当前部署中必然成立。
查看答案与解析

正确答案A

“大数组反复分配导致高代 GC 增多”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”,再以“达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理”组织证据。采用误区“LOH 上的对象永远不会被回收”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

107 评审大对象堆相关实现时,以下哪项判断不成立?

难度: 实战

  • A. 达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理
  • B. 阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准
  • C. LOH 上的对象永远不会被回收
  • D. 遇到“大数组反复分配导致高代 GC 增多”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析

正确答案C

题目要求找出不成立的判断,“LOH 上的对象永远不会被回收”正是大对象堆的典型误区。主规则“达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理”描述了实现应依赖的契约,边界“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

108 准备上线涉及大对象堆的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“LOH 上的对象永远不会被回收”完成修改,只要本地运行一次成功就立即发布。
  • B. 依据“达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理”实现,在“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”成立的环境中验证,并为“大数组反复分配导致高代 GC 增多”保留可观测证据和回退条件。
  • C. 按照“达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理”修改代码,但不核对“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”或目标发布模式。
  • D. 只验证“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”,实现仍继续依赖“LOH 上的对象永远不会被回收”这一未经证明的假设。
查看答案与解析

正确答案B

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“达到大对象阈值的分配通常进入 LOH,并由较高代回收节奏管理”,部署环境满足“阈值和压缩策略属于运行时行为,应以当前版本文档和指标为准”,并能在“大数组反复分配导致高代 GC 增多”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

109 关于固定对象堆,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响
  • B. 所有 pin 操作都会把既有对象自动移动到 POH
  • C. 进入 POH 不代表对象无需生命周期管理或固定没有成本
  • D. 只要观察到“长期固定缓冲区造成碎片压力”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析

正确答案A

正确项给出了固定对象堆可直接依赖的规则:“POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响”。“进入 POH 不代表对象无需生命周期管理或固定没有成本”是应用规则前必须确认的边界,不是规则本身;“所有 pin 操作都会把既有对象自动移动到 POH”则把常见现象或实现细节扩大成了平台保证。场景“长期固定缓冲区造成碎片压力”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

110 生产环境出现“长期固定缓冲区造成碎片压力”时,针对固定对象堆应如何排查?

难度: 进阶

  • A. 直接采用“所有 pin 操作都会把既有对象自动移动到 POH”解释现象,不再收集目标进程和发布配置证据。
  • B. 只增加机器资源或重启进程,以一次恢复结果代替对“进入 POH 不代表对象无需生命周期管理或固定没有成本”的验证。
  • C. 先验证“进入 POH 不代表对象无需生命周期管理或固定没有成本”,再使用运行时指标、日志或最小复现检查“POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响”是否成立。
  • D. 只检查代码是否能够编译,通过后便认定“POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响”在当前部署中必然成立。
查看答案与解析

正确答案C

“长期固定缓冲区造成碎片压力”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“进入 POH 不代表对象无需生命周期管理或固定没有成本”,再以“POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响”组织证据。采用误区“所有 pin 操作都会把既有对象自动移动到 POH”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

111 评审固定对象堆相关实现时,以下哪项判断不成立?

难度: 实战

  • A. POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响
  • B. 所有 pin 操作都会把既有对象自动移动到 POH
  • C. 进入 POH 不代表对象无需生命周期管理或固定没有成本
  • D. 遇到“长期固定缓冲区造成碎片压力”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析

正确答案B

题目要求找出不成立的判断,“所有 pin 操作都会把既有对象自动移动到 POH”正是固定对象堆的典型误区。主规则“POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响”描述了实现应依赖的契约,边界“进入 POH 不代表对象无需生命周期管理或固定没有成本”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

112 准备上线涉及固定对象堆的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“所有 pin 操作都会把既有对象自动移动到 POH”完成修改,只要本地运行一次成功就立即发布。
  • B. 按照“POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响”修改代码,但不核对“进入 POH 不代表对象无需生命周期管理或固定没有成本”或目标发布模式。
  • C. 只验证“进入 POH 不代表对象无需生命周期管理或固定没有成本”,实现仍继续依赖“所有 pin 操作都会把既有对象自动移动到 POH”这一未经证明的假设。
  • D. 依据“POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响”实现,在“进入 POH 不代表对象无需生命周期管理或固定没有成本”成立的环境中验证,并为“长期固定缓冲区造成碎片压力”保留可观测证据和回退条件。
查看答案与解析

正确答案D

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“POH 为明确固定的对象提供专门堆区域,减少这些对象妨碍其他堆压缩的影响”,部署环境满足“进入 POH 不代表对象无需生命周期管理或固定没有成本”,并能在“长期固定缓冲区造成碎片压力”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

113 关于对象固定,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. 固定对象会暂停整个进程的垃圾回收
  • B. 固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互
  • C. 固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎
  • D. 只要观察到“本机调用期间指针必须保持稳定”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析

正确答案B

正确项给出了对象固定可直接依赖的规则:“固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互”。“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”是应用规则前必须确认的边界,不是规则本身;“固定对象会暂停整个进程的垃圾回收”则把常见现象或实现细节扩大成了平台保证。场景“本机调用期间指针必须保持稳定”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

114 生产环境出现“本机调用期间指针必须保持稳定”时,针对对象固定应如何排查?

难度: 进阶

  • A. 直接采用“固定对象会暂停整个进程的垃圾回收”解释现象,不再收集目标进程和发布配置证据。
  • B. 只增加机器资源或重启进程,以一次恢复结果代替对“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”的验证。
  • C. 先验证“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”,再使用运行时指标、日志或最小复现检查“固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互”是否成立。
  • D. 只检查代码是否能够编译,通过后便认定“固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互”在当前部署中必然成立。
查看答案与解析

正确答案C

“本机调用期间指针必须保持稳定”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”,再以“固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互”组织证据。采用误区“固定对象会暂停整个进程的垃圾回收”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

115 评审对象固定相关实现时,以下哪项判断不成立?

难度: 实战

  • A. 固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互
  • B. 固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎
  • C. 遇到“本机调用期间指针必须保持稳定”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
  • D. 固定对象会暂停整个进程的垃圾回收
查看答案与解析

正确答案D

题目要求找出不成立的判断,“固定对象会暂停整个进程的垃圾回收”正是对象固定的典型误区。主规则“固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互”描述了实现应依赖的契约,边界“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

116 准备上线涉及对象固定的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互”实现,在“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”成立的环境中验证,并为“本机调用期间指针必须保持稳定”保留可观测证据和回退条件。
  • B. 依据“固定对象会暂停整个进程的垃圾回收”完成修改,只要本地运行一次成功就立即发布。
  • C. 按照“固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互”修改代码,但不核对“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”或目标发布模式。
  • D. 只验证“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”,实现仍继续依赖“固定对象会暂停整个进程的垃圾回收”这一未经证明的假设。
查看答案与解析

正确答案A

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“固定对象可阻止 GC 在固定期间移动其地址,便于与需要稳定指针的本机代码交互”,部署环境满足“固定时间应尽量短,跨异步等待保存裸指针尤其需要谨慎”,并能在“本机调用期间指针必须保持稳定”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

117 关于终结队列,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. 进程退出前所有终结器都保证完整执行
  • B. 终结器执行时间和顺序不适合作为业务一致性保证
  • C. 带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加
  • D. 只要观察到“未释放资源导致终结器线程积压”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析

正确答案C

正确项给出了终结队列可直接依赖的规则:“带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加”。“终结器执行时间和顺序不适合作为业务一致性保证”是应用规则前必须确认的边界,不是规则本身;“进程退出前所有终结器都保证完整执行”则把常见现象或实现细节扩大成了平台保证。场景“未释放资源导致终结器线程积压”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

118 生产环境出现“未释放资源导致终结器线程积压”时,针对终结队列应如何排查?

难度: 进阶

  • A. 直接采用“进程退出前所有终结器都保证完整执行”解释现象,不再收集目标进程和发布配置证据。
  • B. 只增加机器资源或重启进程,以一次恢复结果代替对“终结器执行时间和顺序不适合作为业务一致性保证”的验证。
  • C. 只检查代码是否能够编译,通过后便认定“带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加”在当前部署中必然成立。
  • D. 先验证“终结器执行时间和顺序不适合作为业务一致性保证”,再使用运行时指标、日志或最小复现检查“带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加”是否成立。
查看答案与解析

正确答案D

“未释放资源导致终结器线程积压”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“终结器执行时间和顺序不适合作为业务一致性保证”,再以“带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加”组织证据。采用误区“进程退出前所有终结器都保证完整执行”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

119 评审终结队列相关实现时,以下哪项判断不成立?

难度: 实战

  • A. 进程退出前所有终结器都保证完整执行
  • B. 带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加
  • C. 终结器执行时间和顺序不适合作为业务一致性保证
  • D. 遇到“未释放资源导致终结器线程积压”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析

正确答案A

题目要求找出不成立的判断,“进程退出前所有终结器都保证完整执行”正是终结队列的典型误区。主规则“带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加”描述了实现应依赖的契约,边界“终结器执行时间和顺序不适合作为业务一致性保证”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

120 准备上线涉及终结队列的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“进程退出前所有终结器都保证完整执行”完成修改,只要本地运行一次成功就立即发布。
  • B. 依据“带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加”实现,在“终结器执行时间和顺序不适合作为业务一致性保证”成立的环境中验证,并为“未释放资源导致终结器线程积压”保留可观测证据和回退条件。
  • C. 按照“带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加”修改代码,但不核对“终结器执行时间和顺序不适合作为业务一致性保证”或目标发布模式。
  • D. 只验证“终结器执行时间和顺序不适合作为业务一致性保证”,实现仍继续依赖“进程退出前所有终结器都保证完整执行”这一未经证明的假设。
查看答案与解析

正确答案B

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“带终结器的对象在可回收前通常需要进入终结流程,回收成本和存活时间都会增加”,部署环境满足“终结器执行时间和顺序不适合作为业务一致性保证”,并能在“未释放资源导致终结器线程积压”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

官方资料

当前分类

.NET 运行时选择题

查看全部分类 →
  1. 04.NET 运行时试题 04:程序集加载与 AssemblyLoadContext20 题
  2. 05.NET 运行时试题 05:对象内存布局、对象头与装箱20 题
  3. 06.NET 运行时试题 06:GC 代际、LOH、POH 与固定对象20 题
  4. 07.NET 运行时试题 07:Server GC、Workstation GC 与延迟模式20 题
  5. 08.NET 运行时试题 08:裁剪、反射兼容性与 AOT 限制20 题
ESC

输入关键词开始搜索