.NET 中对象生命周期管理与资源清理技术详解
1. 理解对象生命周期与垃圾回收基础
在 .NET 开发中,对象的生命周期管理至关重要。垃圾回收机制是 .NET 运行时环境(CLR)的重要组成部分,它负责自动回收不再使用的对象所占用的内存。在深入探讨之前,我们先了解一些基本信息。
例如,有如下对象的代信息:
- refToMyCar
的代是:1
- tonsOfObjects[9000]
的代是:1
- 第 0 代被清理了 1 次
- 第 1 代被清理了 0 次
- 第 2 代被清理了 0 次
接下来,我们将重点探讨如何构建可终结对象和可处置对象,这些技术仅适用于维护内部非托管资源的托管类。
2. 构建可终结对象
在 .NET 中,所有类的基类 System.Object
定义了一个虚拟方法 Finalize()
,其默认实现为空:
// System.Object
public class Object
{
...
protected virtual void Finalize() {}
}
当为自定义类重写 Finalize()
方法时,我们可以在其中执行必要的清理逻辑。需要注意的是,由于该方法是受保护的,不能通过点运算符直接从类实例调用。而是由垃圾回收器在从内存中移除对象之前调用(如果对象支持)。