以下是我的代码: 静态log = null的Dispose方法会导致内存泄漏吗?如果是,如何避免这种情况并释放静态日志资源?..
public class LogUtil:IDisposable
{
private StreamWriter logwriter;
private LogUtil(StreamWriter sw)
{
this.logwriter = sw;
}
public void Dispose()
{
if (log != null)
{
this.logwriter.Close();
this.logwriter.Dispose();
log = null;
}
}
private static LogUtil log = null;
public static LogUtil getTodayLog()
{
if (log == null)
{
String logfilePath = System.Environment.CurrentDirectory + String.Format("\\{0}{1}{2}.log", DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);
StreamWriter sw = new StreamWriter(logfilePath, true, Encoding.UTF8);
log = new LogUtil(sw);
return log;
}
else
return log;
}
}
答案 0 :(得分:3)
不,只要调用Dispose
,它就不会导致内存泄漏。
我确实想知道为什么它首先是静态的。 log
无法成为非静态类成员或不能设置为null
?在实例销毁时处置static
并没有多大意义。
在我看来,这个static
日志助手可以保持活着直到应用程序结束。