【发布时间】:2010-12-16 03:52:36
【问题描述】:
我创建了有 5 个线程的线程池。当我的应用程序启动时,它们都会启动。问题是我在每个线程的线程循环回调函数中创建了这么多对象,并且应用程序运行时内存以秒为单位增加,这是线程循环回调函数:
void ThreadLoop(){
而(真){
var checkItems = _workItems.Where(w=>w.ActivedTime > 3).ToList();
foreach(检查项目中的变量 i){
_workItems[i.Id].ActivedTime = 0;
_workItems[i.Id].ExecutePostBack();
}
//重新创建新的_workItems字典
_workItems = _workItems.Where(w=>w.ActivedTime > 0).ToDictionary();
// 休眠线程以释放内存
Thread.Sleep(1000);
// 调用 Grab 收集器释放内存
GC.Collect();
}
}
我很困惑,在每个线程上调用 GC.Collect() 是好是坏?是否会导致性能不佳?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-2 asp.net-ajax c#-3.0