对象生命周期列表c#中添加(t_element)

本文关键字:添加 element 周期 生命 列表 对象 | 更新日期: 2023-09-27 18:13:27

我知道add函数实际上只添加了object_element的引用。我的问题是,如果我的列表是一个全局的,通过我在函数中使用add函数,所以_element也是局部的。这是真的,即使我退出了thst函数,_element被声明仍然在堆上,直到说,当全局列表死亡?

谢谢。

对象生命周期列表<T>c#中添加(t_element)

是的,引用指向的对象现在将保持活动。更一般地说,对象几乎总是比创建它们的代码活得更久,因为常规GC是不确定的

这是部分正确的。只要有对该元素的引用(弱引用除外),该元素就会留在堆上。如果列表如您所述是"死的",或者元素被删除。该元素将从堆中移除,但不会立即移除。

即使不再有引用引用该元素,我们仍然需要等待垃圾收集来清理它。元素有可能在垃圾收集器中移动到更高的一代,因此即使是第一级垃圾收集也不会从堆中删除元素。

垃圾收集(在。net中)是很重的东西,我建议你阅读http://msdn.microsoft.com/en-us/magazine/bb985010.aspx了解更多信息

是的,所有的while对象都保存在该列表中,它们所持有的内存不会被GC回收。如果您希望GC在静态或长期收集中收集对象,您可能对WeakReference感兴趣。