内联创建并传递给方法的对象的生命周期是多少? 例如:
myMethod(new String("Hello World"));
字符串“Hello World”是在 myMethod 执行后立即创建和销毁的,还是它仍然保留在内存中直到垃圾收集器将其删除?
最佳答案
JAVA 以不同的方式对待字符串文字。这里将在 String Constant Pool 中创建值为“Hello World”的 String 对象。
并且常量池中这个文字的生命周期将由 JVM 决定,这意味着 JVM 将决定何时收集它作为垃圾(就像常量池中没有更多的内存,现在这个对象没有被任何引用引用) .
但它不会在方法执行后立即销毁。
您可以在此处找到有关字符串常量池的更多详细信息:http://www.thejavageek.com/2013/06/19/the-string-constant-pool/
关于作为参数生命周期传递的 Java 内联对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37545686/