问题:
字符串文字通常被认为是被保留的,因此不易受到垃圾收集。然而,在探索字符串连接、String 类缓存和类卸载的细微差别时,会出现混乱。为了澄清这一点,让我们深入研究以下问题:
答案:
1.编译时文字的垃圾收集:
在编译时定义的字符串文字,只要加载包含这些文字的代码的类加载器就存在。只要使用文字的类保持加载状态,表示它们的 String 对象就不会被垃圾收集。但是,如果类加载器被破坏,文字可能会受到垃圾收集。
2. intern 方法和垃圾收集:
对字符串调用 intern 方法会返回表示字符串文字的相同对象。因此,驻留字符串与文字本身具有相同的生命周期。但是,使用 new 创建的与字符串文字不同的字符串如果变得无法访问,则可能会被垃圾回收。
3.类卸载和字符串文字:
声称文字仅在卸载 String 类时才被垃圾回收是不正确的。 Java 不会卸载其核心类,包括 String 类。只要引用字符串的代码保持活动状态,字符串文字就会被保留。
以上是字符串文字会被垃圾收集吗?探索字符串驻留和类卸载的细微差别。的详细内容。更多信息请关注PHP中文网其他相关文章!