两个问题
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"); }
建议dump一下内存
可以尝试手动调用GC回收一下。
GC.Collect() 不起作用,程序很多地方都写着,没用
@小-小张: 那只能找个分析工具,具体查下到底内存消耗在哪儿了。可以考虑:dotMemory
程序执行前,清空当前上下文所有的缓存。
经过严格测试,发现程序确实有几处内存溢出,DataTable这样用是没问题的,劝大家以后遇到类似情况,先仔细检查一下程序Bug,正确使用都没问题的
你好,我也碰到类似问题,调用dispose 发现变量没有释放。难道就如你所说的 clear,dispose就不需要再管了?请告知最终如何解决的,谢谢!