使用对象清除来提高程序性能

ZDNet软件频道 时间:2004-02-04 作者:ZDNet China |  我要评论(7)
本文关键词:.net
微软.NET通用语言运行过程(CLR)环境中的垃圾收集(Garbage collection)使得开发人员没有必要跟踪内存使用而知道何时释放内存。然而,开发人员通常需要与一个对象的运行过程并行操作,所以有必要知道对象何时不再被使用。这一篇文章概括了使用.NET程序中对象清除(object cleanu
本文译自Builder.com,未经许可请勿转载

微软.NET通用语言运行过程(CLR)环境中的垃圾收集(Garbage collection)使得开发人员没有必要跟踪内存使用而知道何时释放内存。然而,开发人员通常需要与一个对象的运行过程并行操作,所以有必要知道对象何时不再被使用。这一篇文章概括了使用.NET程序中对象清除(object cleanup)的使用步骤。

 

清除垃圾

虽然垃圾收集在.NET CLR是自动的,但它只能处理适用于垃圾收集的对象。系统跟踪对象并判断哪些对象不再被使用,通过发送对象不再被使用的信号,则可以提高这一过程。这需要调用一个对象的dispose方法。

dispose方法是用于与释放内存资源有关的所有任务,它告诉CLR可用于垃圾收集的相关对象,然后释放所有的被对象使用的外部资源(比如window句柄或HWND,数据库连接等)。

仔细琢磨.NET框架类,可以知道很多类都包括dispose方法,例如,以下的类包含:

  • SqlConnection
  • SqlCommand
  • SqlDataReader
  • Timer
  • EventLog
  • Font

在编码过程中涉及到这些对象时,在不再需要这些对象的情况下,你可以调用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()


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134