方法区元空间实现之jdk7和8字符串常量池、运行时常量池、静态变量到底在哪?

方法区元空间实现之jdk7和8字符串常量池、运行时常量池、静态变量到底在哪?方法区(落地实现jdk7永久代,jdk8元空间),元空间并不在虚拟机中,而是使用本地内存1、此区域是线程共享的。储存已加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;2、常量池:编译器生成的各种字面量和符号引用;3、关于字符串常量池和运行时常量池的位置说明:jdk1.6存在永久代,字符串常量池、运行时常量池都是在永久代中;jdk1.7存在永久代,字符串常量池被移动到了堆当中,运行时常量池还是在永久代中;jdk1.8不存在永久代,实现形式是元空间,字符串常量池仍然在堆当中,运行.

大家好,又见面了,我是你们的朋友全栈君。

方法区(落地实现jdk7永久代,jdk8元空间),元空间并不在虚拟机中,而是使用本地内存,它和堆在逻辑上是连续的,但在物理上是不连续的,所以也叫非堆。

1、此区域是线程共享的。储存已加载的类型信息、常量、静态变量、即时编译器编译后的代码等数据;

2、常量池:编译器生成的各种字面量和符号引用;

3、关于字符串常量池和运行时常量池的位置说明:

JDK版本 方法区实现 变化
jdk1.6 永久代 字符串常量池、运行时常量池、静态变量都是在永久代中
jdk1.7 永久代 字符串常量池和静态变量被移动到了堆当中,运行时常量池还是在永久代中
jdk1.8 元空间 字符串常量池和静态变量仍然在堆当中;运行时常量池、类型信息、常量、字段、方法被移动都了元空间中

4、元空间的好处:

① 减少报OOM的可能:元空间与永久代类似,本质区别是元空间并不占用虚拟机内存了,而是使用本地内存,由于本地内存一般是比较大的,所以方法区就没有那么容易报OOM(OutOfMemoryError)。
② 提高JVM性能:元空间的垃圾回收很少,一定程度上减少了GC扫描及压缩的时间
③类及相关的元数据的生命周期与类加载器的一致;
④ 每个加载器有专门的存储空间。

元空间的对象被垃圾回收的概率相对堆空间的对象是要小很多的,所有将两者分开,就减少了很多去扫描元空间对象带来的开销。

5、字符串常量池为什么要移动到堆空间中?
个人的理解:对于字符串常量这种创建完成用几次就不被使用的对象,是很容易被回收的。而要进行频繁垃圾回收的地方是堆空间, 这样在JDK7就把字符串常量池移动到堆空间中就是很明智和有必要的选择了。这样就避免了放到不频繁进行垃圾回收的元空间中应该被垃圾回收的对象而不能及时进行垃圾回收的浪费空间的现象出现。

思考:那么静态变量为什么也要在JDK7和字符串常量池一起移动到堆空间中呢?静态变量是不是和类一样的生命周期吗?

尚硅谷深解Java虚拟机(JVM)内存结构各部分总结【三层划分】https://blog.csdn.net/qq_43012792/article/details/107358550

有用点个关注,手留余香!? ? ?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142658.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大肚能容天下难容之事_研学讲解

    大肚能容天下难容之事_研学讲解DCGAN入门前言DCGAN介绍所需环境代码解刨训练集获取所需参数构造前期准备工作代码编写日志输出训练节点保存训练节点读取生成优化器权重初始化图像数据集读取运行额外参数核心代码生成器G(x)判别器D(x)主函数结果展示学以致用前言根据之前的两片入门级别的GAN文章,相信各位对GAN有一丝丝了解。知道对抗网络究竟是干什么的就能读懂这篇文章了=·=DCGAN介绍DCGAN的英文全名为:DeepConvolutionGenerativeAdversarialNetworks顾名思义,DCG

    2025年7月4日
    3
  • 简单工厂模式

    简单工厂模式

    2021年11月30日
    46
  • 站点开发和企业级开发有什么差别?[通俗易懂]

    站点开发和企业级开发有什么差别?

    2022年2月6日
    419
  • POSIT算法的原理–opencv 3D姿态估计[通俗易懂]

    POSIT算法的原理–opencv 3D姿态估计[通俗易懂]3D姿态估计-POSIT算法 POSIT算法,PosefromOrthographyandScalingwithIterations, 比例正交投影迭代变换算法:用于估计物体的3D姿态(相对于镜头的平移和旋转量)。算法正常工作的前提是物体在Z轴方向的“厚度”远小于其在Z轴方向的平均深度,比如距离镜头10米远的一张椅子。 算法流程:假设待求的姿态,包括旋转矩阵R和

    2025年8月12日
    2
  • 暴力破解带有密码的压缩文件

    暴力破解带有密码的压缩文件一暴力破解,就是不断生成新的密码去尝试能否破解成功。假如我们的密码位数为3位,其里面的值有可能是0或者1,其产生的密码集的数量为2的3次幂,也就是八个,然后一个一个去破解。而这生成这8个密码的过程就有一个递归规则存在。我们传入深度deep和对应字符串passwd两个参数,如果深度为1,直接输出字符串passwd,如果深度不为1,把深度deep减一,并把可能存在的字符串集合[0,1]遍历,添加…

    2022年5月7日
    111
  • 理解VUE响应式原理[通俗易懂]

    理解VUE响应式原理[通俗易懂]1、响应式原理基础响应式原理基础是基于Object.defineProperty(obj,prop,descriptor),descriptor里面可以定义get和set方法,可以在获取属性值事触发get方法(可以收集依赖),设置属性值时触发set方法(更新依赖)。扩展:上面是vue2.0的基础原理,vue3.0的基础原理是:2、核心对象:Dep与WatcherDep:vue在data里申明的每一个属性都会生成一个Dep的实例对象,De…

    2022年4月30日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号