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

  • 相关阅读:
    【引用】关于closeonexec标志
    CentOS解决编码问题
    /etc/init.d/functions (转)
    centos 安装 中文 支持 语言包(转)
    vsftpd 530 错误
    __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)(转)
    C语言中可变参数的用法 va_start va_end(转)
    守护进程 setsid(转)
    /dev/null 重定向 ./sh >/dev/null 2>&1
    C# 子类调用父类构造函数
  • 原文地址:https://www.cnblogs.com/skyvalley/p/13818240.html
Copyright © 2011-2022 走看看