作者WizTonE (Racerlution)
看板C_Sharp
标题[问题] DataTable与记忆体的管理的方式
时间Wed Dec 8 15:23:27 2010
各位好
现在的情况是这样子
我要拉历史资料出来跑, 大概两个礼拜的份
每天大约六组别,每组大约2000笔(但是跑到500笔就break换下一组)
我每拉一个组别出来跑完,都会将datatable clear, dispose, 再来GC.Collect
至於每笔会用到4~5个reader, 但是是宣告成全域变数
问题来了~
一开始没有datatable dispose, GC.Collect,reader有12个且为区域变数时
我几乎只跑完历史资料的一天,记忆体吃掉将近800MB
而虚拟记忆体更扯,吃掉1.6GB
但是加入dispose, GC.Collect,并且将reader改成全域变数後
记忆体能维持在70~200MB间,但是虚拟记忆体仍然往上成长中
这个虚拟记忆体有办法跟着释放掉吗~?
还是说这是OS控制的,不受程式管控?
很难想像这样跑下去两个礼拜的历史资料,虚拟记忆体会变成多大@@
敬请指教,谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.138.149.87