内联创建并传递给方法的对象的生命周期是多少? 例如:
myMethod(new String("Hello World"));
字符串“Hello World”在myMethod执行后立即创建和销毁,或者它仍然保留在内存中,直到垃圾收集器将其删除?
答案 0 :(得分:7)
JAVA对String Literal的处理方式不同。这里是String对象的值" Hello World"将在字符串常量池中创建。
这个文字在常量池中的生命周期将由JVM决定,这意味着JVM将决定何时收集垃圾(就像常量池中没有更多内存,现在这个对象没有被任何引用引用)
但是在方法执行后它不会立即被销毁。
您可以在此处找到有关字符串常量池的更多详细信息:http://www.thejavageek.com/2013/06/19/the-string-constant-pool/
答案 1 :(得分:0)
我很确定它只会存在于方法中,除非您将其分配给全局变量。