hollischuang / toBeTopJavaer

To Be Top Javaer - Java工程师成神之路
https://www.hollischuang.com
25.36k stars 5.47k forks source link

字符串常量池在java1.8中搬到了元空间中吗?查到的资料不统一,有人说还是在堆中 #104

Closed Osfly closed 4 years ago

Osfly commented 4 years ago

字符串常量池在java1.8中搬到了元空间中吗?查到的资料不统一,有人说还是在堆中

yansheng836 commented 4 years ago

JDK 1.8 同 JDK 1.7 比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对 JVM 规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。

方法区的定义 Java 虚拟机规范中定义方法区是堆的一个逻辑部分。方法区存放以下信息:

  • 已经被虚拟机加载的类信息
  • 常量
  • 静态变量
  • 即时编译器编译后的代码

字符串常量池是在元数据区。

可以参考:JVM 内存结构