关于Dataset内存使用的不解
关于Dataset内存使用的疑惑
每次修改数据内容后调用查询,这时将产生一个dataset对象并占用内存,是不是应该在显示到页面后将这个myds指向的dataset对象释放呢?应该用什么语句来释放内存中的这个对象呢?myds.clear()或myds.Reset()可以吗?似乎.NET有专门的回收内存的机制?
环境:VS2010 C#
我的调用方式:
查询函数:
------解决方案--------------------
在.net时代, 微软为开发人员提供了一个强有力的机制--垃圾回收. 垃圾回收机制是CLR的一部分, 我们不用操心内存何时释放, 我们可以花更多精力关注应用程序的业务逻辑. CLR里面的垃圾回收机制用一定的算法判断某些内存程序不再使用,回收这些内存并交给我们的程序再使用.
"垃圾回收器"也许并不像许多人想象的一样会立即执行(当堆中的资源需要释放时),而是在引用类型的引用被删除和它在"堆"中的对象实例被删除中间有 个间隔,为什么呢? 因为"垃圾回收器"的调用是比较消耗系统资源的,因此不可能经常被调用!
基于这种机制,可实现IDisposable接口的Dispose()来显示释放由对象使用的所有未托管资源。
即可 DataSet.Dispose() 来释放资源。
每次修改数据内容后调用查询,这时将产生一个dataset对象并占用内存,是不是应该在显示到页面后将这个myds指向的dataset对象释放呢?应该用什么语句来释放内存中的这个对象呢?myds.clear()或myds.Reset()可以吗?似乎.NET有专门的回收内存的机制?
环境:VS2010 C#
我的调用方式:
DataSet myds;
myds = Query("SELECT * FROM Test");
//
//将myds显示到页面…………
//
查询函数:
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param >查询语句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
ds.Clear();
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
------解决方案--------------------
在.net时代, 微软为开发人员提供了一个强有力的机制--垃圾回收. 垃圾回收机制是CLR的一部分, 我们不用操心内存何时释放, 我们可以花更多精力关注应用程序的业务逻辑. CLR里面的垃圾回收机制用一定的算法判断某些内存程序不再使用,回收这些内存并交给我们的程序再使用.
"垃圾回收器"也许并不像许多人想象的一样会立即执行(当堆中的资源需要释放时),而是在引用类型的引用被删除和它在"堆"中的对象实例被删除中间有 个间隔,为什么呢? 因为"垃圾回收器"的调用是比较消耗系统资源的,因此不可能经常被调用!
基于这种机制,可实现IDisposable接口的Dispose()来显示释放由对象使用的所有未托管资源。
即可 DataSet.Dispose() 来释放资源。