如果我在公共类中声明这样的静态队列:
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#内存泄漏吗?垃圾收集是否会声明可能未使用的内存?
答案 0 :(得分:8)
没有。什么都不会导致泄漏。
一旦q
引用的对象不再在任何地方被引用,它将被适当地垃圾收集。
答案 1 :(得分:6)
不应该导致内存泄漏。原始队列由垃圾收集器释放。
答案 2 :(得分:2)
如果任何引用'q'的对象不再被引用,垃圾收集器将收集它。
答案 3 :(得分:1)
可能值得花些时间阅读垃圾收集的许多文章中的一篇以及它是如何工作的,例如: http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
要回答你的问题,不 - 不会导致内存泄漏。