JVM_1.5_运行时内存区域_运行时常量池

版权声明:本文为博主原创文章,可以转载,但请注明出处。 https://blog.csdn.net/Simba_cheng/article/details/82919792

运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。

之前将JVM运行时内存区域的内容,整理在了一篇文章中。

在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。

所以将《JVM运行时内存区域详解》分为以下几个章节:

JVM_1.0_运行时内存区域_堆

JVM_1.1_运行时内存区域_Java虚拟机栈

JVM_1.2_运行时内存区域_方法区

JVM_1.3_运行时内存区域_本地方法栈

JVM_1.4_运行时内存区域_程序计数器

JVM_1.5_运行时内存区域_运行时常量池

这里将《Java虚拟机规范中文版》上传了,点击下面链接,即可下载

Java虚拟机规范SE7中文版下载

目录

运行时常量池

《深入理解Java虚拟机:JVM高级特性与最佳实践》

《Java Virtual Machine Specification Java SE 7 中文版》


运行时常量池

《深入理解Java虚拟机:JVM高级特性与最佳实践》

运行时常量池(Runtime Constant Pool)是方法区的一部分

Class文件中除了有类版本、字段、方法、接口等描述信息外,还有一项信息是常量池Constant Pool

(注意:这里的常量池是Class文件中的,可以理解为Class文件常量池,每个Class文件都有,不要和JVM中的常量池混淆)

对于运行时常量池,Java虚拟机规范并没有做任何细节的要求,不同厂商不同实现。

不过一般来说,除了保存Class文件中描述的符号应用外,还会把翻译出来的直接引用也存储在运行时常量池中。

Java语言并不要求常量一定只能在编译期产生,也就是并非预置入Class文件中常量池的内容才能进入方法区运行时常量池。

运行期间也可能将新的常量放入池中,比如:String类的intern()方法

《Java Virtual Machine Specification Java SE 7 中文版》

运行时常量池(Runtime Constant Pool)是每一个类或接口的常量池(Constant_Pool)的运行时表示形式。

它包含了若干种不同的常量:从编译期可知的数值字面量必须运行期解析后才能获得的方法或字段引用

每一个运行时常量池都分配在Java虚拟机的方法区之中,在类和接口被加载到虚拟机后,对应的运行时常量池就被创建出来。

当创建类或接口的时候,如果构造运行时常量池所需要的内存空间超过了方法区所能提供的最大值,那 Java 虚拟机将会抛出一个 OutOfMemoryError 异常。
 

猜你喜欢

转载自blog.csdn.net/Simba_cheng/article/details/82919792