很少有疑慮的字符串,字符串創作游泳池和堆
當我寫此基礎上,從互聯網上的各種物品我的理解,請原諒我可能是錯的某些語句。
當我們做 字符串STR1 =新的String( 「newStr1」);。 這會創建2個字符串對象。一個在常規堆中,另一個在字符串池中。爲什麼2個對象及其用法?爲什麼不只是一個游泳池?
如果我們創建對象爲String str2 = new String(「newStr2」)。intern();。 這將檢查池中是否存在類似的(有意義的相等)對象,並對其進行引用。如果沒有,它會在池中創建一個,但不在堆中?如果是這樣,那麼我們應該使用實習生大部分時間來節省內存?雖然它會影響性能。 所以基本上它是String str2 =「newStr2」;(實習中隱含字符串文字)
在Java-6之後,字符串池從perm gen空間移動到堆區?所以基本上我們現在只有一個區域堆或者字符串池現在作爲一個單獨的部分堆?如果它不是一個單獨的部分,那麼仍然創建2個對象?