【发布时间】:2012-10-16 21:06:12
【问题描述】:
如果“安全”是一个误导性的词,我很抱歉,我不确定在这种情况下该使用什么词。我想知道是否例如使用
public static List<myObj> myList = new List<myObj>();
在 C# 中是可以接受的。无论如何,静态变量会在应用程序的整个生命周期中一直存在于 RAM 中,因此例如在 ASPX 等应用程序中,这可能会导致一些不需要的行为,并且 GC 不会收集分配。
我注意到,如果我有一个静态对象列表,比如静态“全局”类,即。
globl.myList.add(foo);
然后它们会在应用程序的整个生命周期中保持不变。这是否意味着如果我有一个静态对象列表,那么附加到列表中的对象本身就是静态的,还是因为有对它们的引用,GC 不收集它们?换句话说,如果我删除了一个元素,GC 会在以后收集它还是会卡在堆中直到应用程序死亡?
提前谢谢!
【问题讨论】: