在 C# 中,内存管理主要由 .NET 运行时(CLR)的垃圾回收器(Garbage Collector, GC)自动处理。然而,了解一些内存管理的基本概念和最佳实践可以帮助你更高效地编写和优化代码。以下是一些关于 C# 内存管理的关键点和最佳实践。
1. 垃圾回收机制
垃圾回收器的工作原理
- 代(Generations):CLR 将对象分为三代(Generation 0、1 和 2)。新生对象通常放在 Generation 0 中,经过多次垃圾回收后未被回收的对象会被移动到更高代。
- 垃圾回收过程:
- 标记(Marking):GC 会遍历所有根对象(如全局变量、局部变量等),标记所有可达对象。
- 清除(Sweeping):回收未被标记的对象占用的内存。
- 压缩(Compacting):移动存活对象,消除内存碎片。
强制垃圾回收
虽然不推荐频繁手动触发垃圾回收,但在某些情况下可能需要强制垃圾回收:
csharp
深色版本
GC.Collect();
2. 对象生命周期
引用类型 vs 值类型
- 引用类型:对象存储在堆中,引用存储在栈中。
- 值类型