1.字节码文件中有个constant pool,就是常量池 2.当字节码文件被加载到内存中之后,方法区中会存放字节码文件的constant pool相关信息,这时候就成为了运行时常量池 3.常量池保存了各种字面量和对类型、域和方法的符号引用。 4.常量池可以看做是一张表,虚拟机指令根据这张表找到要执行的方法名、类名、参数类型、...
②并非预置如Class文件中常量池的内容才能进入方法区运行时常量池,运行期也可将新的常量放入池内,用得较多的时String类的intern()方法 二.Class类文件常量池 1.比喻为Class文件里的资源仓库,它是Class文件结构中与其他项目关联最多的数据,通常也是占用Class文件空间最大的数据项目之一 2.常量池中数...
new String("ABC") :常量池+堆各一个,2个 后面再 "+ ABC":常量池新生成 “ABCABC" 1个 所以共3个 下面两个池都在方法区里(method area),是每个被加载的类,都有的 2.运行时常量池(runtime constant pool) 当程序运行到某个类时,class文件中的信息就会被解析到内存的方法区里的运行时常量池中。看图...
运行时常量池相较于class文件中的静态常量池有一个重要特征是运行时常量池具备动态性,Java语言并不要求常量只有编译期才能产生,也就是说:并不是只有预置到class文件静态常量池中的内容才能进入到方法区的运行时常量池,在运行期间,也可能将新的常量放入运行时常量池中,这种特性被开发人员利用的较多的有String类的inter...
class文件常量池存储的是当class文件被java虚拟机加载进来后存放在方法区的一些字面量和符号引用,字面量包括字符串,基本类型的常量。 运行时常量池是当class文件被加载完成后,java虚拟机会将class文件常量池里的内容转移到运行时常量池里,在class文件常量池的符号引用有一部分是会被转变为直接引用的,比如说类的静态...
1.字节码文件中有个constant pool,就是常量池 2.当字节码文件被加载到内存中之后,方法区中会存放字节码文件的constant pool相关信息,这时候就成为了运行时常量池 3.常量池保存了各种字面量和对类型、域和方法的符号引用。 4.常量池可以看做是一张表,虚拟机指令根据这张表找到要执行的方法名、类名、参数类型、...
一.运行时常量池(Runtime Constant Pool) 1.方法区的一部分,因此受到内存限制,当无法再申请内存时会抛OutOfMemoryError异常 2.Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有常量池(Constant Pool Table) 3.常量池表(Constant Pool Table): ...