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