设置其value = null时是否会释放静态变量?

时间:2014-11-04 07:46:11

标签: c# .net c#-4.0

以下是我的代码: 静态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;
 }
}

1 个答案:

答案 0 :(得分:3)

不,只要调用Dispose,它就不会导致内存泄漏。

我确实想知道为什么它首先是静态的。 log无法成为非静态类成员或不能设置为null?在实例销毁时处置static并没有多大意义。

在我看来,这个static日志助手可以保持活着直到应用程序结束。