首页 新闻 会员 周边 捐助

C# DataTable多次赋值的时候,怎么在每次赋值前情况所占内存,避免内存浪费

0
悬赏园豆:30 [待解决问题]

两个问题
1. 有一个Timer,每5秒执行一次 给DataTable赋值,前台页面展示DataTable的数据
2. 类中有很多静态哈希表或者静态DataTable,里面存放很多计算用的数据

   请问,这样执行一天,为什么程序占用的内存会增大很多呢,要怎样优化???

下面是这个类大概的内容

//这个HashTable里面大概有五百条数据,程序会一直用这个HashTable
public static HashTable ht = new HashTable();


DataTable dt = new DataTable();
private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e)
{
    dt.Clear();
    dt.Dispose();
    dt = SqlHelper.ExecuteDT("select * from table1");
}
小-小张的主页 小-小张 | 初学一级 | 园豆:123
提问于:2015-08-05 22:20
< >
分享
所有回答(4)
0

建议dump一下内存

jello chen | 园豆:7336 (大侠五级) | 2015-08-05 22:51
0

可以尝试手动调用GC回收一下。

幻天芒 | 园豆:37207 (高人七级) | 2015-08-06 09:28

GC.Collect() 不起作用,程序很多地方都写着,没用

支持(0) 反对(0) 小-小张 | 园豆:123 (初学一级) | 2015-08-06 09:55

@小-小张: 那只能找个分析工具,具体查下到底内存消耗在哪儿了。可以考虑:dotMemory 

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-08-06 09:57
0

程序执行前,清空当前上下文所有的缓存。

唯我独萌 | 园豆:537 (小虾三级) | 2015-08-10 08:39
0

经过严格测试,发现程序确实有几处内存溢出,DataTable这样用是没问题的,劝大家以后遇到类似情况,先仔细检查一下程序Bug,正确使用都没问题的

小-小张 | 园豆:123 (初学一级) | 2016-04-20 15:59

你好,我也碰到类似问题,调用dispose 发现变量没有释放。难道就如你所说的 clear,dispose就不需要再管了?请告知最终如何解决的,谢谢!

支持(0) 反对(0) qdyjg | 园豆:200 (初学一级) | 2019-03-05 14:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册