0

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

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# 中的内存泄漏吗?垃圾收集会收回可能未使用的内存吗?

4

4 回答 4

8

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

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

于 2012-09-11T15:45:59.810 回答
6

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

于 2012-09-11T15:46:00.370 回答
2

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

于 2012-09-11T15:46:50.813 回答
1

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

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

于 2012-09-11T15:56:45.957 回答