字符串常量池處在JVM的堆中,那么是在堆的哪個部分呢


java8之后,堆在邏輯上被分為新生區+養老區+元空間

然后字符串常量池也被放在了堆中

網絡上全都是只寫了這一個結論,即被放在了堆中

那么到底是堆的哪個部分呢,我找了很久都沒有找到答案

但是我看到了一個答案是這樣子的

 

 在這個答案中,提到了字符串分配在Java堆的主要部分

那我想是不是字符串又變成對象一樣存在於堆中,然后也需要經過新生區和養老區呢?

字符串常量池里面的字符串應該也會被回收不是一直存在呢?

現在我還沒有能力解決這個問題,希望有人能夠給出答案。

---------------------------

今天看尚硅谷周陽老師的面試題,他講字符串的時候提到了一句,字符串常量池在java8之后跑到了元空間里面

我覺得這個比較可信,但是上面的我也無法確定,我比較相信下面這樣的說法,即放在了元空間里

各位自己判斷吧

-----------------------------第三次更新

java8之后,堆在邏輯上被分為新生區+養老區+元空間

而元空間是屬於本地內存

所以依照第二次更新的說法,字符串常量池在java8之后跑到了元空間里面,但其實也是屬於堆的內存空間里

所以第一次更新的說法其實和第二次更新的說法並不沖突

但是大家一般都會說java8之后字符串常量池被放在了   堆中

------------------------------第四次更新

發現一篇可以參考的博客,但是里面還是存在了很多錯誤,辯證參考吧

https://www.cnblogs.com/cosmos-wong/p/12925299.html#autoid-0-4-0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM