JAN*_*JAN 2 java string garbage-collection immutability
考虑一下代码:
public class Stringer {
public static void main(String[] args) {
String s1 = "SomeLine";
System.out.println(s1); // prints SomeLine
s1 = "AnotherLine";
System.out.println(s1); // prints AnotherLine
}
}
Run Code Online (Sandbox Code Playgroud)
当我改变s1来自SomeLine于AnotherLine,因为字符串是不可改变的,这是否意味着SomeLine丢失,可享有GC?
非常感激
当我改变
s1来自SomeLine于AnotherLine,因为字符串是不可改变的,这是否意味着SomeLine丢失,可享有GC?
String不可变的事实与您的问题无关.您重新分配变量并因此丢失其他参考的事实决定了该对象是否是GC的候选者.
要回答这个问题,那就是它不是String文字的.
此外,字符串文字始终引用类String的相同实例.这是因为字符串文字 - 或者更常见的是作为常量表达式(第15.28节)的值的字符串 - 被"实现"以便使用该方法共享唯一实例
String.intern.
该String对象不会被垃圾收集,因为该对象ClassLoader具有对它的引用.
相关阅读:
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |