今天再看JDK源碼的時候看到了String類的不一樣版本的實現方式的不一樣,主要是substring這個方法,JDK6裏面的實現方式是:ide
很明顯能夠看到,調用String對象的substring方法後指向的對象地址並無發生改變,只是改變的是偏移量,這樣的話在GC階段就有可能形成內存泄露了。對象
還好查了一下資料JDK7解決了這個問題,因而趕忙查看了JDK7的源碼:blog
這個裏面是經過內存複製的方式從新指向了一個新的地址,解決了內存泄露的隱患內存