java - 在方法定义内创建的对象的生命周期

标签 java

我对在方法定义内创建的对象的生命周期有疑问。据我所知,变量的所有生命周期(局部于方法)都随着该方法的完成而结束。因此,如果我在方法内创建一个对象,该对象会在该方法执行后被销毁吗?

最佳答案

一旦运行时可以证明该对象将不再被访问,该对象就会成为垃圾回收的资格。实际上,只要运行时认为方便,它就会在之后的某个时间被收集。

请注意,对象生命周期不受范围(这是一个语法结构)的控制,而是由可达性控制。当方法仍在执行时(例如,当没有任何接触对象的代码行需要执行时),对象可能会停止可达,或者它可能继续可达方法返回后很长时间(例如,如果对对象的引用存储在静态字段中或从方法返回)。

Raymond Chen 就此撰写了一篇很棒的博客文章,名为 When is an object eligible for garbage collection?它是关于 C#,而不是 Java,但也适用类似的原则。

关于java - 在方法定义内创建的对象的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38581087/

相关文章:

java - 为什么我会收到空​​指针异常?我应该使用反射吗?

java - 我将如何创建一个存储另一个类的对象的字段?

java - org.jooq.exception.SQLDialectNotSupportedException : Type class java. 方言默认不支持 net.Inet6Address

java - 如何在Kotlin中将泛型类映射到相同类的泛型数组

java - 为什么堆转储的大小小于 JVM 消耗的大小?

java - 错误: variable might not have been initialized & if statement

Java,泛型 : What's the difference between Set<? > s = HashSet<String>() 和 Set s = HashSet<String>()?

java - IndexOutOfBounds,当它不应该的时候

java - 无法在eclipse中打开jar文件

java - 在compareTo中比较对象的更多字段