【问题标题】:Do Stack() will be collect by garbage collector .Net [closed]垃圾收集器 .Net 将收集 Stack() [关闭]
【发布时间】:2016-11-18 22:43:13
【问题描述】:

myFunction() 中,我定义了一个堆栈,如:Stack myStack = new Stack()。如果myFunction() 在服务器上运行多次,myStack 是否会被 GC 收集?如果不是,请建议我一种在 asp.Net 中使用堆栈之类的方法或更好地提高性能的方法。我还在学习asp.Net

【问题讨论】:

    标签: c# asp.net .net garbage-collection stack


    【解决方案1】:

    如果在方法中本地声明了一个变量,并且在方法范围之外不存在对其的引用,那么在方法结束时,本地变量所持有的引用将不再存在。 (以前)引用的对象不再有任何引用,因此可以进行垃圾回收。

    【讨论】:

    • myStack 位于我在模型中用作自定义验证器的类中。所以当模型已经检查有效时,它完全由 GC 收集,对吗?
    • @Nampd 是方法中的局部变量,还是类的字段或属性?
    • 这是一个局部变量@spender
    • 所以你会没事的。
    【解决方案2】:

    如果您在myFunction() 调用范围内使用myStack 变量,则在myFunction() 调用结束之前不会对它进行垃圾收集。例如:

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

    在这种情况下,如果您调用 myFunction(),您的 myStack 变量将在您的 myFunction() 调用结束后被垃圾回收。但是,如果您正在访问 myStack 方法内的 myStack 变量(从其他范围),则不会在 myFunction() 调用结束时对它进行垃圾收集,因为(可能)有另一个引用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      相关资源
      最近更新 更多