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

标签 java lifetime object-lifetime

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

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/

相关文章:

java - 更新 android mediastore 中的专辑封面?

java - 如何将两个不同的对象映射在一起

java - 将控制台打印到 JFrame TextArea - 行为异常(屏幕闪烁)

rust - 使用具有引用值的借用特征

rust - 为什么我可以返回一个使用 'char.to_ascii_lowercase()` 而不是 `str.to_lowercase()` 的拥有值

struct - 在声明结构字段对象类型时,我必须在这里使用什么样的生命周期参数

c++ - 存储字符串文字指针是否安全?

java - Apache Camel 程序中的这个变量来自哪里?

c++ - 右值引用和多态性

c++ - 拥有 `ConstBufferSequence`的boost::asio数据