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

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


字符串“ Hello World”是在myMethod执行后立即创建并销毁的,还是一直保留在内存中,直到垃圾回收器将其删除为止?

最佳答案

JAVA对String Literal的处理不同。在这里,将在字符串常量池中创建值为“ Hello World”的字符串对象。

而且常量池中此文字的生存时间将由JVM决定,这意味着JVM将决定何时为垃圾回收它(例如,常量池中没有更多内存,并且此引用现在不再引用该对象)。

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

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

关于java - 作为参数生存期传递的Java内联对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37545686/

10-11 22:46
查看更多