我对在方法定义内创建的对象的生命周期有疑问。据我所知,变量的所有生命周期(局部于方法)都随着该方法的完成而结束。因此,如果我在方法内创建一个对象,该对象会在该方法执行后被销毁吗?
最佳答案
一旦运行时可以证明该对象将不再被访问,该对象就会成为垃圾回收的资格。实际上,只要运行时认为方便,它就会在之后的某个时间被收集。
请注意,对象生命周期不受范围(这是一个语法结构)的控制,而是由可达性控制。当方法仍在执行时(例如,当没有任何接触对象的代码行需要执行时),对象可能会停止可达,或者它可能继续可达方法返回后很长时间(例如,如果对对象的引用存储在静态字段中或从方法返回)。
Raymond Chen 就此撰写了一篇很棒的博客文章,名为 When is an object eligible for garbage collection?它是关于 C#,而不是 Java,但也适用类似的原则。
关于java - 在方法定义内创建的对象的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38581087/