Java 作为参数生命周期传递的内联对象

Java inline object passed as parameter lifetime

内联创建并传递给方法的对象的生命周期是多少? 例如:

myMethod(new String("Hello World"));

字符串 "Hello World" 是在 myMethod 执行后立即创建和销毁的,还是它仍然保留在内存中直到垃圾收集器将其删除?

JAVA 以不同方式对待字符串文字。这里将在 字符串常量池 .

中创建值为 "Hello World" 的字符串对象

并且常量池中这个文字的生命周期将由 JVM 决定,这意味着 JVM 将决定何时收集它作为垃圾(就像常量池中没有更多的内存,现在这个对象没有被任何引用)参考)。

但不会在方法执行后立即销毁

您可以在此处找到有关字符串常量池的更多详细信息:http://www.thejavageek.com/2013/06/19/the-string-constant-pool/

我很确定它只会存在于方法中,除非你将它分配给一个全局变量。