给公司弄了个服务自动同步数据,但是占用的内存怎么越来越大了,加了 GC.Collect();
这个也不行,不到几个小时内存就大的吓人了。下面是代码try
{
object[] ob = new object[3];
DataTable dTable = GetTableBySql("select * from TB ");
if (dTable.Rows.Count > 0)
{
DataSet dSet = new DataSet("tb");
dSet.Tables.Add(dTable);
ob[0] = dSet;
ob[1] = "1";
ob[2] = "2";
object Reslut = WebServiceHelper.InvokeWebService(url, "METHOD", ob);
if (Convert.ToInt32(Reslut) > 0)
{
ArrayList list = new ArrayList();
foreach (DataRow dRow in dTable.Rows)
{
if (!list.Contains(dRow["T1"].ToString()))
{
list.Add(dRow["T1"].ToString());
string sqlText = "update TB SET T1="+dRow["T1"].ToString(); ExeSql(sqlText);
}
}
}
}
catch()
finally
{
GC.Collect();
} 上面的字段我替换了,这个代码有问题吗
这个也不行,不到几个小时内存就大的吓人了。下面是代码try
{
object[] ob = new object[3];
DataTable dTable = GetTableBySql("select * from TB ");
if (dTable.Rows.Count > 0)
{
DataSet dSet = new DataSet("tb");
dSet.Tables.Add(dTable);
ob[0] = dSet;
ob[1] = "1";
ob[2] = "2";
object Reslut = WebServiceHelper.InvokeWebService(url, "METHOD", ob);
if (Convert.ToInt32(Reslut) > 0)
{
ArrayList list = new ArrayList();
foreach (DataRow dRow in dTable.Rows)
{
if (!list.Contains(dRow["T1"].ToString()))
{
list.Add(dRow["T1"].ToString());
string sqlText = "update TB SET T1="+dRow["T1"].ToString(); ExeSql(sqlText);
}
}
}
}
catch()
finally
{
GC.Collect();
} 上面的字段我替换了,这个代码有问题吗
解决方案 »
- 请问,这段线程代码,怎么解释
- C# winform 关于picturebox输出ico文件的问题
- 用excel做输入窗口,用什么语言好??
- 关于C#连接MySql的问题
- 关于visual stdio 报表设计的问题?
- 关于动态创建页面对象的保存问题~
- 既要获取索引,又不想打乱初始顺序,我该怎么办?
- 这是怎么回事??无法生成临时类(result=1)。 error CS2001: δ???C:\WINDOWS\TEMP\oucmsx7h.0.cs error CS2008: 未指定输入
- 金山毒霸和VS.NET
- C#窗体操作问题
- 求助:数据库.bak文件追加数据
- winform listview 如何控制每行数量
GC.WaitForPendingFinalizers();
GC.Collect();最好自己主动调用Dispse进行释放
注意使用using , 让它自动clean up
using (DataSet set = new DataSet("office"))
{
// Put code that adds stuff to DataSet here.
// ... The DataSet will be cleaned up outside the block.
}using (DataTable table = new DataTable())
{
}最主要的,select * from TB 假设有10万条,是不是循环执行10万次ExeSql()
循环执行开销极大
不能考虑拼一个sql 执行么? 比如1000条拼成一个SQL, 执行一次ExeSQL()
这个你再看看是不是单例模式,最好是单例
以前也这么干过,这货就是吃内存的主。每调一次他要重新实列一次。所以不要用动态方式去调WebService.
老实的用引用的方式吧,内存会少很多。