微软.NET通用语言运行过程(CLR)环境中的垃圾收集(Garbage collection)使得开发人员没有必要跟踪内存使用而知道何时释放内存。然而,开发人员通常需要与一个对象的运行过程并行操作,所以有必要知道对象何时不再被使用。这一篇文章概括了使用.NET程序中对象清除(object cleanup)的使用步骤。
虽然垃圾收集在.NET CLR是自动的,但它只能处理适用于垃圾收集的对象。系统跟踪对象并判断哪些对象不再被使用,通过发送对象不再被使用的信号,则可以提高这一过程。这需要调用一个对象的dispose方法。
dispose方法是用于与释放内存资源有关的所有任务,它告诉CLR可用于垃圾收集的相关对象,然后释放所有的被对象使用的外部资源(比如window句柄或HWND,数据库连接等)。
仔细琢磨.NET框架类,可以知道很多类都包括dispose方法,例如,以下的类包含:
在编码过程中涉及到这些对象时,在不再需要这些对象的情况下,你可以调用dispose方法,由此被对象使用的资源的可返回到系统中。以下的VB.NET源代码范例说明了当处理一个SQL Server连接时的这些对象的使用过程。
Dim conn As SqlConnection
Dim comm As SqlCommand
Dim dr As SqlDataReader
conn = New SqlConnection()
comm = New SqlCommand()
conn.ConnectionString = "data source=test;user id=test;password=test"
comm.CommandText = "SELECT * FROM test
comm.CommandType = CommandType.Text
comm.Connection = conn
conn.Open()
' Do something with the database
conn.Close()
conn.Dispose()
comm..Dispose()
dr.Close()