private void Work()
{
DataTable dt = EbzonLibrary.Enterprise.LoadNonCheckedUrl();//加载数据 一次20条 从数据库取
StringBuilder sb = new StringBuilder();
foreach(DataRow dr in dt.Rows)
{
string id = dr["ID"].ToString();
sql = " update ProductSeries set UrlOpen ='N' where ProductSeriesID='"+id+"' ";
sb.Append(sql);
}if(sb.ToString().Length > 10)
{
int result = EbzonLibrary.SimpleSqlHelper.ExecuteNonQuery(sb.ToString());//执行更新
sb = new StringBuilder();
lblRun.Text = DateTime.Now + "成功更新"+result;
}
dt = null;
Work(); //重复调用
}这是一个简单的程序,但我不知道不什么运行起来,内存从几十K一直 上升到 200多MB,目前还在增加!
数据库链接之类的资源也都关闭了!
我不知道什么原因导致! 个人感觉 是 DataTable dt ,感觉每次加载20条数据 就会在内存中 累积!这样一直上升!
但后来在该方法未 将 dt = null;似乎也不起作用!哪个前辈来指点一下!为谢
{
DataTable dt = EbzonLibrary.Enterprise.LoadNonCheckedUrl();//加载数据 一次20条 从数据库取
StringBuilder sb = new StringBuilder();
foreach(DataRow dr in dt.Rows)
{
string id = dr["ID"].ToString();
sql = " update ProductSeries set UrlOpen ='N' where ProductSeriesID='"+id+"' ";
sb.Append(sql);
}if(sb.ToString().Length > 10)
{
int result = EbzonLibrary.SimpleSqlHelper.ExecuteNonQuery(sb.ToString());//执行更新
sb = new StringBuilder();
lblRun.Text = DateTime.Now + "成功更新"+result;
}
dt = null;
Work(); //重复调用
}这是一个简单的程序,但我不知道不什么运行起来,内存从几十K一直 上升到 200多MB,目前还在增加!
数据库链接之类的资源也都关闭了!
我不知道什么原因导致! 个人感觉 是 DataTable dt ,感觉每次加载20条数据 就会在内存中 累积!这样一直上升!
但后来在该方法未 将 dt = null;似乎也不起作用!哪个前辈来指点一下!为谢
private void Work()
{
...
Work();
}
---------------
你以為這樣就釋放資源了?使用dt.Dispose()
while(true)
{
Work();
}对需要一直执行的情况,不要用递归,虽然你没有参数没有返回值,不会很快造成堆栈溢出,但是迟早要挂的....