【问题标题】:Will this cause a memory leak?这会导致内存泄漏吗?
【发布时间】:2012-09-11 15:44:39
【问题描述】:

如果我在公共类中声明这样的静态队列:

public class c
{
  private string[] s={"a","b","c"};
  private static Queue<string> q = new Queue<string>(s);

  static private void SomeMethod()
  {
     private string[] s2 = {"123","345"};
     // somewhere in here I reassign the queue q = new Queue<string>(s2);
  }
}

我的操作会导致 C# 中的内存泄漏吗?垃圾回收会收回可能未使用的内存吗?

【问题讨论】:

    标签: c# memory-leaks


    【解决方案1】:

    没有。没有任何东西会导致泄漏。

    一旦q引用的对象在任何地方都不再被引用,它将被适当地进行垃圾回收。

    【讨论】:

      【解决方案2】:

      它不应该导致内存泄漏。原始队列被垃圾收集器释放。

      【讨论】:

        【解决方案3】:

        如果 'q' 引用的任何对象在任何地方都不再引用,垃圾收集器将收集它。

        【讨论】:

          【解决方案4】:

          可能值得您花时间阅读有关垃圾收集及其工作原理的众多文章中的一篇,例如http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

          不过,要回答您的问题,不 - 这不会导致内存泄漏。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-06-13
            相关资源
            最近更新 更多