zoukankan      html  css  js  c++  java
  • 字符串常量池处在JVM的堆中,那么是在堆的哪个部分呢

    java8之后,堆在逻辑上被分为新生区+养老区+元空间

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

    网络上全都是只写了这一个结论,即被放在了堆中

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

    但是我看到了一个答案是这样子的

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

    那我想是不是字符串又变成对象一样存在于堆中,然后也需要经过新生区和养老区呢?

    字符串常量池里面的字符串应该也会被回收不是一直存在呢?

    现在我还没有能力解决这个问题,希望有人能够给出答案。

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

    今天看尚硅谷周阳老师的面试题,他讲字符串的时候提到了一句,字符串常量池在java8之后跑到了元空间里面

    我觉得这个比较可信,但是上面的我也无法确定,我比较相信下面这样的说法,即放在了元空间里

    各位自己判断吧

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

    java8之后,堆在逻辑上被分为新生区+养老区+元空间

    而元空间是属于本地内存

    所以依照第二次更新的说法,字符串常量池在java8之后跑到了元空间里面,但其实也是属于堆的内存空间里

    所以第一次更新的说法其实和第二次更新的说法并不冲突

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

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

    发现一篇可以参考的博客,但是里面还是存在了很多错误,辩证参考吧

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

  • 相关阅读:
    脏读一
    Tomcat7基于Redis的Session共享实战二
    Tomcat7基于Redis的Session共享实战一
    SQL优化经验
    Java Collections.sort方法对list集合排序
    Redis应用场景一
    Redis 发布订阅用法
    关于消息队列的使用
    Mysql日常开发注意要点
    中药处方
  • 原文地址:https://www.cnblogs.com/skyvalley/p/13818240.html
Copyright © 2011-2022 走看看