Windows Service 中New Timer造成内存无止境增长的问题
最近写了个Windows服务,服务跑起不到1天就会因为内存占用太大而当机。
然后我屏蔽了业务代码,仅留下new Timer的代码(如下面的代码段)
但问题依旧,所以想请教高人服务里的timer怎么使用才得当?
//百度说这个声明必须放在外部,否则会被垃圾回收
private System.Threading.Timer tMain = null;
private void ReadDev( object obj )
{
//释放tMain占用的资源
tMain.Dispose();
//。。。屏蔽的业务代码
tMain = new System.Threading.Timer( ReadDev, null, 10000, 0 );
}
//百度说这个声明必须放在外部,否则会被垃圾回收
private System.Threading.Timer tMain = null;
private void ReadDev( object obj )
{
//释放tMain占用的资源
tMain.Dispose();
//。。。屏蔽的业务代码
while ( /*需要重新开始ReadDev的条件*/ ) {
//。。。屏蔽的业务代码
Thread.Sleep( 10000 );
}
tMain = new System.Threading.Timer( ReadDev, null, 10000, 0 );
}