JDK1.6及以下String字符串分割的问题
涉及方法:substring(x,y)
问题描述:当定义一个容量非常大的字符串时,使用substring(x,y)方法进行切割时,String类并不是将切割的结果生成一个新的字符串,而是直接引用原先的值(char数组),通过移动数组下标的方式来展示结果。
这样虽然说提高了分割速度,但是如果分割次数过多且没及时释放或者分割后的字符串变为常量,则会导致GC无法回收此内存,造成内存泄漏。
源码如下:
示例代码(JDK1.6)

解决办法(二者选其一):
- 升级项目JDK为1.7及以上
- 将分割后的结果用新的字符串承接。 例:x = x.substring(x, y) + "";
浙公网安备 33010602011771号