今天再看JDK源码的时候看到了String类的不一样版本的实现方式的不一样,主要是substring这个方法,JDK6里面的实现方式是:ide
很明显能够看到,调用String对象的substring方法后指向的对象地址并无发生改变,只是改变的是偏移量,这样的话在GC阶段就有可能形成内存泄露了。对象
还好查了一下资料JDK7解决了这个问题,因而赶忙查看了JDK7的源码:blog
这个里面是经过内存复制的方式从新指向了一个新的地址,解决了内存泄露的隐患内存