每个class都有一个运行时常量池,类在解析之后将符号引用替换成直接引用,与全局常量池中的引用值保持一致。 运行时常量池相对于class文件常量池的另外一个特性是具备动态性,java语言并不要求常量一定只有编译器才产生,也就是并非预置入class文件中常量池的内容才能进入方法区运行时常量池,运行期间也可能将新的常量放入...
1. 静态常量池 也叫class文件常量池,主要存放编译期生成的各种字面量(Literal)和符号引用(Symbolic References)。 final类型的常量在编译期间就会进行分配。 静态常量池指的是在编译期确定,保存在class文件中的一些数据。 静态常量池是在编译期间生成的,存储在.class文件中。 字面量(Literal)和符号引用量,字面量相...
Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。 1)所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 2)而运行时常量池,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保...
1)所谓**静态常量池**,即\*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 代码语言:txt 复制 2)而**运行时常量池**,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在方法区中,我们常说的常量池,...
首先汇总一下JDK的运行时常量池、字符串常量池、静态常量池的功能及存储结构。 一、JVM运行时内存结构 在了解常量池之前我们先通过一张图了解一下JVM的整个内存分布图。下图为JDK7的内存结构: 在上图中JVM所管理的内存主要包括以下区域:程序计数器(Program Counter Register)、虚拟机栈(VM Stack)、本地方法栈(Nati...
运行时常量池相对于class文件常量池的另外一个特性是具备动态性,java语言并不要求常量一定只有编译器才产生,也就是并非预置入class文件中常量池的内容才能进入方法区运行时常量池,运行期间也可能将新的常量放入池中。 字符串常量池 字符串池里的内容是在类加载完成,经过验证、准备阶段之后存放在字符串常量池中。关于...
静态常量池:每个class文件有对应的一个 Class常量池 ,里面包含符号引用和字面量。运行时常量池:当class被加载后,class常量池中的内容会被加载到方法区的运行时常量池中,但是并不包含 字面量中字符型 内容。字符串常量池:当class被加载后,class常量池字面量中的字符型
字符串对象中的char数组指向运行时常量池中的”计算机软件“// 最后在字符串常量池记录一下这个字符串对象的引用// 调用str2.intern()方法时,会首先判断str2指向的字符串对象里的字符串是否首次出现在运行时常量池// 这里非首次出现,所以会将字符串常量池中记录的引用返回给str3// 虽然str3和str2指向的字符串...
然后静态变量值,常量值都是在运行时常量池中,在类初始化的时候然后一些字符串都会在堆中创建对象由...
1、此区域是线程共享的。储存已加载的类型信息、常量、静态变量、即时编译器编译后的代码等数据; 2、常量池:编译器生成的各种字面量和符号引用; 3、关于字符串常量池和运行时常量池的位置说明: 4、元空间的好处: ① 减少报OOM的可能:元空间与永久代类似,本质区别是元空间并不占用虚拟机内存了,而是使用本地内存...