要解决这个问题也很简单,用intern()就可以了,如: public String getSub() { String total=....... return total.substring(0,1).intern(); } String sub = getSub(); 这时系统会为sub的数据单独开辟一个独立的内存空间,原字符串total在getSub()结束就可被垃圾回收了。
总的来说,还是要具体情况具体分析,灵活运用,并没有一定的答案,关键是理解背后的机制。
------解决方案-------------------- 留上的例子不错。
不过有个疑问 total.substring(0,1).intern();每次的内容不一样。字符串池也会不会爆掉啊
------解决方案-------------------- 又去翻了下api: Returns a new string that is a substring of this string.
照这句,感觉是total会被回收的吧。
Java code
public String getSub() {
String total=.......
return total.substring(0,1);
}
String sub = getSub();
------解决方案-------------------- Out Of Memory 效率肯定不差
------解决方案--------------------