String内存泄漏
内存泄漏:指为一个对象分配好内存之后,在对象已经不再使用时未及时的释放,倒是一直占据内存单元,使实际可用内存减少,就好像内存泄漏了一样。
内存溢出:内存不够用了,比如在一个无限的循环里不断的创建一个大的对象,使得沾满内存溢出,这就是所谓的内存溢出。
内存泄漏问题其实就是在JDK1.6中,例如有一个字符串a,字符串b是字符串a的一个子字符串,b=a.substring()截取,这样的话a和b用的value是同一个引用,如果我们把a的引用为空,本意是释放a所占用的空间,但是这个时候,垃圾回收机制是没办法回收这个value的,因为这个还在被字符串b所引用,所以就会一直占着堆内存,就会导致内存泄漏。
注意这是jdk1.6之前的会产生的,在jdk1.8上不会产生这个问题,原因在与源码的改变。JDK1.8时,subString()源码,已经不在引用原来的char[]数组,而是建立了新的数组。