String类的substring方法bug

    今天再看JDK源码的时候看到了String类的不一样版本的实现方式的不一样,主要是substring这个方法,JDK6里面的实现方式是:ide

wKioL1Qn0-HhwQcAAAL5qPztuWI993.jpg

wKiom1Qn07jxe5AZAAEwB_pzjz8521.jpg

很明显能够看到,调用String对象的substring方法后指向的对象地址并无发生改变,只是改变的是偏移量,这样的话在GC阶段就有可能形成内存泄露了。对象

  还好查了一下资料JDK7解决了这个问题,因而赶忙查看了JDK7的源码:blog

wKioL1Qn1HSTr4pSAAKxL6VlXRo252.jpg

wKiom1Qn1EzCgnDVAAJoairhoMQ543.jpg

这个里面是经过内存复制的方式从新指向了一个新的地址,解决了内存泄露的隐患
内存

相关文章
相关标签/搜索