Java内联对象作为参数生存期传递

时间:2016-05-31 12:23:42

标签: java lifetime object-lifetime

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

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

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

2 个答案:

答案 0 :(得分:7)

JAVA对String Literal的处理方式不同。这里是String对象的值" Hello World"将在字符串常量池中创建。

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

但是在方法执行后它不会立即被销毁。

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

答案 1 :(得分:0)

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