垃圾收集器-
有时称为“收割者”-按自己的时间表运行,并收集不参考的对象。当然,方法退出后就无法引用局部变量,因为它们超出了范围,因此它们对于您的程序来说是死的*,但是它们仍然存在于堆中,直到GC运行为止。
在正常情况下(和大多数异常情况),您无需告诉收割机何时进行工作。当需要它时,它会静默地来,带走那些不再需要的东西。这是使用高级语言进行工作的主要优点之一:可以安全地假设您不需要考虑诸如管理死对象的重新分配之类的事情。您可以将它们抛在肩上,知道它们永远不会打扰您。我想有些高性能,高需求的应用程序需要使用GC进行摆弄,但这是一种优化,除非您有确凿的证据相反,否则应该始终将其视为过早的优化。
*当然,对于返回到调用函数的局部变量,它可能会成为该范围内的局部变量,并且会增加寿命。通常,规则是:如果代码的某些部分仍在乎该变量,则不会对其进行垃圾回收,并且如果程序的任何部分都在乎该变量,则无需考虑它。



