首页文章正文

常量池在哪个区,常量池为什么在堆中

常量放在什么区 2023-04-07 15:55 255 墨鱼
常量放在什么区

常量池在哪个区,常量池为什么在堆中

1. 字符串常量池(String Constant Pool): 1.1:字符串常量池在Java内存区域的哪个位置?在JDK6.0及之前版本,字符串常量池是放在Perm Gen区(也就是方法区)中;在JDK7.0版本,字符串常量JVM中运行时常量池在方法区中,因为是建立在JDK1.7/1.8的基础上来研究这个,所以我先认为String常量池在堆中。Class文件中除了类的版本、字段、方法、接口等描述信息,还有常量

(=`′=) 静态常量池在.class 中,运⾏时常量池在⽅法区中,JDK 1.8 中⽅法区(method area)已经被元空间(metaspace)代替。字符串池在JDK 1.7 之后被分离到堆区。String str = new Str字符串常量池,已经移动到堆上(jdk8之前是perm区),也就是执行intern方法后存的地方。类文件常量池,constant_pool,是每个类每个接口所拥有的,这部分数据在方法区,也就是元数据区。

{ String s1 = "abc"; // 字面量定义的方式,abc"存储在字符串常量池中String s2 = "abc"; System.out.println(s1 == s2); // 判断地址true s1 = "hello"; System.out.println(s对于全局量来说:除了全局常量存放在常量区,普通全局变量和静态全局变量都存放在静态区。JAVA内存模型与JVM内存模型的区别引用和常量池对象的引用;但对象本身不存放在栈中,而是存放在堆(new出来

常量池在哪里?Java6和6之前,常量池是存放在方法区(永久代)中的。Java7,将常量池是存放到了堆中。Java8之后,取消了整个永久代区域,取而代之的是元空间。运行JDK1.8中字符串常量池和运行时常量池逻辑上属于方法区,但是实际存放在堆内存中,因此既可以说两者存放在堆中,也可以说两则存在于方法区中,这就是造成误解的地方。关于佐证运行常量

执行结果说明jdk1.6的时候常量池在方法区。jdk1.7的测试下面是jdk1.7的测试情况,还是这个代码,就是启动参数设置的不一样。使用的jvm参数设置:-XX:+PrintGCDetails -Xms100M -Xm之前写的确实写的有问题,我都没想到会被这么多人赞,为了不误人子弟,我重新写一写这个题,用到的

后台-插件-广告管理-内容页尾部广告(手机)

标签: 常量池为什么在堆中

发表评论

评论列表

蓝灯加速器 Copyright @ 2011-2022 All Rights Reserved. 版权所有 备案号:京ICP1234567-2号