Jave运行时常量池是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jave运行时常量池是啥意思?相关的知识,希望对你有一定的参考价值。

参考技术A 运行时常量池是方法区的一部分,Class文件中除了有类的版本,字段,方法,接口等信息以外,还有一项信息是常量池用于存储编译器生成的各种字面量和符号引用,这部分信息将在类加载后存放到方法区的运行时常量池中。Java虚拟机对类的每一部分(包括常量池)都有严格的规定,每个字节用于存储哪种数据都必须有规范上的要求,这样才能够被虚拟机认可,装载和执行。一般来说,除了保存Class文件中描述的符号引用外,还会把翻译出来的直接引用也存储在运行时常量池中。

常量池

运行时常量池(Runtime Constant Pool)
运行时常量池是每一个类或接口的常量池(Constant_Pool)的运行时表现形式,它包括了若干种常量:编译器可知的数值字面量到必须运行期解析后才能获得的方法或字段的引用。
运行时常量池是方法区的一部分。每一个运行时常量池都分配在JVM的方法区中,在类和接口被加载到JVM后,对应的运行时常量池就被创建。
在创建类和接口的运行时常量池时,可能会遇到的异常:
OutOfMemoryError:当创建类和接口时,如果构造运行时常量池所需的内存空间超过了方法区所能提供的最大内存空间后就会抛出OutOfMemoryError

以上是关于Jave运行时常量池是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

常量池

Java千百问_07JVM架构(019)_运行时常量池是什么

Java 运行时常量池

JVM——运行时常量池

JVM——运行时常量池

jvm 内存溢出 - 方法区及运行时常量池溢出