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