资源管理

更新:2007 年 11 月

所有对象都占用系统资源,如内存、文件句柄和数据库连接。公共语言运行库 (CLR) 自动管理资源,通常不必考虑释放不需要的对象。但是,理解资源管理的工作原理能帮助您设计更有效的应用程序。

垃圾回收

CLR 使用名为垃圾回收的系统管理分配的资源。当应用程序中任何运行的代码都不再访问某对象时,系统垃圾回收器释放该对象的资源。垃圾回收算法是非确定性的,因此无法确定 CLR 释放对象资源的时间。下面各节介绍了 Visual Basic 中管理资源方式的一些更改。

将对象指定为 Nothing

Nothing 是一个关键字,Visual Basic 使用它指示对象变量不包含对对象的引用。早期版本的 Visual Basic 鼓励将未使用的对象指定为 Nothing,以取消对象变量与对象的关联并释放资源。现在仍可以将未使用的对象指定为 Nothing,但由于 Visual Basic 管理资源的方式,此进程并不保证立即释放这些对象。一般来说,仅应将共享成员或全局变量等长寿命的对象指定为 Nothing。

Dispose

有些对象支持名为 Dispose 的方法;其用途是更迅速地释放系统资源。支持 Dispose 方法的类必须实现 IDisposable 接口。当要释放对象资源时,需要显式调用 Dispose 方法。例如:

ThisObject.Dispose()

Finalize

有些类支持另一种方法 Finalize,在释放对象时该方法自动运行,而且可用于执行其他清理任务。Finalize 方法类似于在早期版本的 Visual Basic 中使用的 Class_Terminate() 方法。当某个对象变得不可访问后,CLR 将最终调用该对象的 Finalize 方法。由于垃圾回收算法是非确定性的,因此可能会立即调用 Finalize 方法,也可能会在几小时后调用。

请参见

概念

对象生存期:如何创建和销毁对象

组件的初始化和终止

参考

Nothing (Visual Basic)

Dispose

IDisposable