java8之后,堆在逻辑上被分为新生区+养老区+元空间
然后字符串常量池也被放在了堆中
网络上全都是只写了这一个结论,即被放在了堆中
那么到底是堆的哪个部分呢,我找了很久都没有找到答案
但是我看到了一个答案是这样子的
在这个答案中,提到了字符串分配在Java堆的主要部分
那我想是不是字符串又变成对象一样存在于堆中,然后也需要经过新生区和养老区呢?
字符串常量池里面的字符串应该也会被回收不是一直存在呢?
现在我还没有能力解决这个问题,希望有人能够给出答案。
---------------------------
今天看尚硅谷周阳老师的面试题,他讲字符串的时候提到了一句,字符串常量池在java8之后跑到了元空间里面
我觉得这个比较可信,但是上面的我也无法确定,我比较相信下面这样的说法,即放在了元空间里
各位自己判断吧
-----------------------------第三次更新
java8之后,堆在逻辑上被分为新生区+养老区+元空间
而元空间是属于本地内存
所以依照第二次更新的说法,字符串常量池在java8之后跑到了元空间里面,但其实也是属于堆的内存空间里
所以第一次更新的说法其实和第二次更新的说法并不冲突
但是大家一般都会说java8之后字符串常量池被放在了 堆中
------------------------------第四次更新
发现一篇可以参考的博客,但是里面还是存在了很多错误,辩证参考吧
https://www.cnblogs.com/cosmos-wong/p/12925299.html#autoid-0-4-0