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

dar*_*lbo 1 java lifetime object-lifetime

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

myMethod(new String("Hello World"));
Run Code Online (Sandbox Code Playgroud)

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

小智 7

JAVA对String Literal的处理方式不同.这里将在String Constant Pool中创建值为"Hello World"的String对象.

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

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

你可以在这里找到关于字符串常量池的更多细节:http://www.thejavageek.com/2013/06/19/the-string-constant-pool/