2016-07-15 54 views
-2

myFunction(),我定义了一个堆栈,如:Stack myStack = new Stack()。将myStack通过GC或不在服务器上,如果myFunction()多次运行采集?如果不是,请建议我在asp.Net中使用类似堆栈的方式,或者更好地提高性能。我还在学习有关asp.Net待办事项栈()将收集由垃圾收集器的.Net

回答

0

如果一个变量的方法局部声明和对它的引用方法的范围之外存在,那么在方法结束时,参考举行由当地变量将不再存在。 (之前)被引用的对象不再具有任何引用,因此有资格进行垃圾回收。

+0

myStack是我在我的模型作为自定义验证程序使用一个类里面。所以模型检查合格时它完全由GC收集,对吗? – Nampd

+0

@Nampd它是方法中的局部变量还是类中的某个属性或属性? – spender

+0

这是@spender – Nampd

0

如果您正在使用myFunction()调用范围内的myStack变量,它将不会被垃圾收集,直到调用myFunction()结束。例如:

public void myFunction() 
{ 
    Stack myStack = new Stack(); 
    //do stuff with myStack 
} 

在这种情况下,如果你打电话myFunction(),你myStack变量将被垃圾收集一旦你myFunction()通话结束。然而,如果要访问(从一些其他范围)的myFunction()方法内的myStack变量,它不会被垃圾收集在myFunction()呼叫结束,因为没有(可能)的另一参考它。