String.intern()的垃圾回收行为

如果我使用String.intern()来提高性能,因为我可以使用“

==”来比较内部字符串,是否会遇到垃圾回收问题?内联字符串的垃圾回收机制与普通字符串有何不同?

回答:

实际上,这不是垃圾收集优化,而是字符串池优化。调用时[String.intern()](http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#intern\(\)),您用其基本引用(首次遇到此字符串的引用,如果尚不知道此引用,则为参考)替换对初始String的引用。

但是,一旦您的字符串不再在应用程序中使用,它将成为垃圾回收器问题,因为内部字符串池是String类的静态成员,并且永远不会被垃圾回收。

根据经验,我认为最好 使用此intern方法,而让编译器仅将其用于常量字符串,这些声明如下:

String myString = "a constant that will be interned";

更好的是,从某种意义上讲,它不会让您做错误的假设,==而当错误的假设不成立时,它可能会起作用。

此外,事实从String.equals根本上说==是一种优化,以确保在引擎盖下使用了优化的内部字符串。这是一个更多的证据==应该

被串上使用。

以上是 String.intern()的垃圾回收行为 的全部内容, 来源链接: utcz.com/qa/419484.html

回到顶部