【发布时间】:2013-10-01 06:50:27
【问题描述】:
如何释放数据表对象使用的内存,比如 dt;这样我就可以将它用于一组不同的值? dt=null 够吗? 这样做有什么好处吗?
【问题讨论】:
标签: asp.net datatable garbage-collection 3-tier
如何释放数据表对象使用的内存,比如 dt;这样我就可以将它用于一组不同的值? dt=null 够吗? 这样做有什么好处吗?
【问题讨论】:
标签: asp.net datatable garbage-collection 3-tier
您可以使用table.Clear(); 或更便宜的简单table = new DataTable();。由于DataTable 实现了IDisposable,您也可以调用table.Dispose(); 或将其与using 语句一起使用。但是,这并不是必需的,因为 DataTable 不使用非托管资源。它只是一个内存中的对象。
旁注:您不需要手动将其设置为null,垃圾收集器会处理它,所以真的没有必要这样做。
【讨论】:
Public Shared Sub CleanupDataTable(ByRef dtToCleanup As DataTable)
If dtToCleanup IsNot Nothing Then
dtToCleanup.Rows.Clear()
dtToCleanup.Constraints.Clear()
dtToCleanup.ParentRelations.Clear()
dtToCleanup.ChildRelations.Clear()
dtToCleanup.PrimaryKey = Nothing
dtToCleanup.Columns.Clear()
dtToCleanup = Nothing
End If
End Sub
【讨论】: