JDK1.6及以下String字符串分割的问题

涉及方法:substring(x,y)

问题描述:当定义一个容量非常大的字符串时,使用substring(x,y)方法进行切割时,String类并不是将切割的结果生成一个新的字符串,而是直接引用原先的值(char数组),通过移动数组下标的方式来展示结果。

这样虽然说提高了分割速度,但是如果分割次数过多且没及时释放或者分割后的字符串变为常量,则会导致GC无法回收此内存,造成内存泄漏。

源码如下:

示例代码(JDK1.6)

解决办法(二者选其一):

  1. 升级项目JDK为1.7及以上
  2. 将分割后的结果用新的字符串承接。 例:x = x.substring(x, y) + "";
posted @ 2022-06-15 10:35  guoxfee  阅读(77)  评论(0)    收藏  举报