C#面试题更新 2026-08-05

请解释 .NET 平台中垃圾回收器的工作原理,并说明它是怎样负责内存管理的?

技术原理C#.NET

考察说明

考查对托管内存自动管理核心机制的理解,包括对象生命周期、回收算法与分代策略。

回答思路

  1. 【回答框架 1】垃圾回收器在托管堆上自动追踪对象引用,当对象不可达时标记为可回收,周期性释放内存并压缩堆,无需开发者手动释放。
  2. 【回答框架 2】对象按存活时间分代:第0代存放短期对象,回收频繁;第1代为幸存对象;第2代为长期存活对象,回收最慢。GC根据代龄选择合适回收频率以平衡性能。
  3. 【回答框架 3】回收阶段包括标记、清除、压缩,并通过终止队列处理析构器,使用可达性分析判断根引用,避免提前回收。
  4. 【回答框架 4】内存管理基于根(如静态字段、线程栈)出发遍历引用图,不可达对象回收后更新引用,确保内存一致性并减少碎片。
  5. 【关键点 1】自动管理托管内存,基于可达性分析标记存活对象。
  6. 【关键点 2】分代回收优化性能,代龄越高回收频率越低。
  7. 【关键点 3】GC保证内存安全,但可能带来暂停,可通过工作站或服务器模式调整。
  8. 【易错点 1】误认为GC立即释放对象,实际可能延迟到合适的回收代。
  9. 【易错点 2】忽略非托管资源需实现IDisposable模式,否则造成泄漏。
  10. 【易错点 3】认为GC保证线程安全,对象间同步仍需自行控制。