我有两个类,第二个继承第一个。
然后我有了这个:
First[] tab = new First[5];
tab[0] = new First();
tab[1] = new First();
tab[2] = new First();
我的问题是:如果我这样做:
tab[1] = new Second();
我第一次用来调用标签[1]的内存是怎么回事?它是垃圾收集和内存是免费的?
如果不是我可以做些什么来解放它?
任何帮助都将不胜感激。
答案 0 :(得分:3)
从数组中替换对象会导致该对象不再被数组引用。
与任何其他对象一样,如果没有其他有根对象引用它,它最终将被垃圾收集。
答案 1 :(得分:2)
执行时
tab[1] = new Second();
以前在First
中的tab[1]
实例不再被引用,并标记为垃圾回收。
在垃圾收集器运行之前,内存本身实际上并不可用,这不是即时的。
当然,假设没有其他任何东西引用该实例。
如果你使用Google垃圾收集器,那么.NET垃圾收集器上有很多很多的精彩文章及其工作原理。
答案 2 :(得分:1)
tab [1]的“First”应该去垃圾收集(最终),因为没有其他变量指向那个内存。
答案 3 :(得分:0)
此外,您可以通过System.GC.Collect()