在myFunction()
中,我定义了一个堆栈:Stack myStack = new Stack()
。如果myStack
在服务器上运行多次,GC是否会收集myFunction()
?如果没有,请建议我在asp.Net中使用堆栈之类的方法,或者更好地提高性能。我还在学习asp.Net
答案 0 :(得分:0)
如果变量在方法中本地声明,并且在方法范围之外不存在对它的引用,则在方法结束时,局部变量保持的引用将不再存在。 (先前)引用的对象不再具有任何引用,因此有资格进行垃圾回收。
答案 1 :(得分:0)
如果您在myStack
通话范围内使用myFunction()
变量,则在myFunction()
通话结束前不会对其进行垃圾回收。例如:
public void myFunction()
{
Stack myStack = new Stack();
//do stuff with myStack
}
在这种情况下,如果您致电myFunction()
,则myStack
来电结束后,您的myFunction()
变量将被垃圾回收。但是,如果您正在访问myStack
方法内的myFunction()
变量(来自其他某个范围),则在myFunction()
调用结束时不会对其进行垃圾回收,因为(可能)有另一个参考。