2012-09-11 149 views
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#中的内存泄漏?垃圾回收会追回可能未使用的内存吗?

回答

8

不会有什么会导致泄漏。

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

6

它不应该导致内存泄漏。原始队列由垃圾回收器解除分配。

2

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