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

C# 中垃圾回收器负责内存的自动管理,请说明其核心工作原理以及分代回收策略对性能的影响。

性能优化技术原理C#

考察说明

考察对C#自动内存管理机制的理解,包括托管堆、分代、回收触发条件和性能权衡。

回答思路

  1. 【回答框架 1】垃圾回收器管理托管堆,将对象分为0代、1代、2代。新分配对象进入0代,回收时存活对象晋升到下一代,从而减少每次回收需检查的对象数量。
  2. 【回答框架 2】回收触发条件包括第0代对象填满、显式调用GC.Collect、系统内存压力大等。回收阶段会暂停托管线程,进行标记-清除或压缩,以回收无引用对象的内存。
  3. 【回答框架 3】分代策略优化了性能:多数对象生命周期短,在0代即被回收,避免对长期存活对象频繁检查。对2代回收较少,但耗时较长。
  4. 【回答框架 4】弱引用允许在内存不足时释放对象,避免长生命周期对象持有短生命周期对象的引用,有助于降低内存泄漏风险。
  5. 【回答框架 5】代价是GC暂停时间可能导致延迟峰值,且频繁分配大对象会引发高代价的回收。需权衡内存与吞吐,可通过对象池等方式优化。
  6. 【关键点 1】垃圾回收器自动管理托管堆,通过分代(0/1/2)提升效率。
  7. 【关键点 2】回收触发条件包括代满、显式调用或内存压力。
  8. 【关键点 3】弱引用帮助避免长生命周期对象造成泄漏。
  9. 【易错点 1】断言GC保证低延迟不准确,大对象回收或高频率回收会产生明显暂停。
  10. 【易错点 2】分代回收仅优化部分场景,所有代都可能因压力被回收,不能依赖单一代行为。