java8之后,堆在邏輯上被分為新生區+養老區+元空間
然后字符串常量池也被放在了堆中
網絡上全都是只寫了這一個結論,即被放在了堆中
那么到底是堆的哪個部分呢,我找了很久都沒有找到答案
但是我看到了一個答案是這樣子的
在這個答案中,提到了字符串分配在Java堆的主要部分
那我想是不是字符串又變成對象一樣存在於堆中,然后也需要經過新生區和養老區呢?
字符串常量池里面的字符串應該也會被回收不是一直存在呢?
現在我還沒有能力解決這個問題,希望有人能夠給出答案。
---------------------------
今天看尚硅谷周陽老師的面試題,他講字符串的時候提到了一句,字符串常量池在java8之后跑到了元空間里面
我覺得這個比較可信,但是上面的我也無法確定,我比較相信下面這樣的說法,即放在了元空間里
各位自己判斷吧
-----------------------------第三次更新
java8之后,堆在邏輯上被分為新生區+養老區+元空間
而元空間是屬於本地內存
所以依照第二次更新的說法,字符串常量池在java8之后跑到了元空間里面,但其實也是屬於堆的內存空間里
所以第一次更新的說法其實和第二次更新的說法並不沖突
但是大家一般都會說java8之后字符串常量池被放在了 堆中
------------------------------第四次更新
發現一篇可以參考的博客,但是里面還是存在了很多錯誤,辯證參考吧
https://www.cnblogs.com/cosmos-wong/p/12925299.html#autoid-0-4-0