jvm内存模型:运行时常量池的理解

运行时常量池是方法区域的一部分。除了在类文件中描述类的版本,字段,方法,接口等之外,还有一个常量池(ConstantPoolTable),用于存储编译期间生成的各种文字和符号引用。。此部分的内容将在加载类后存储在方法区域中的运行时常量池中。
  jvm内存模型

Java虚拟机对Class文件的每个部分(自然包括常量池)的格式都有严格的规定。每个字节用于存储的数据类型必须符合规范的要求,以便虚拟机可以识别它。加载并执行。但是对于运行时常量池,Java虚拟机规范没有提出任何详细要求。由不同提供程序实现的虚拟机可以根据自己的需求实现此内存区域。但是,一般来讲,除了保存在Class文件中描述的符号引用外,转换后的直接引用也存储在运行时常量池中。
  与类文件常量池相比,运行时常量池的另一个重要功能是动态的。Java语言不要求必须仅在编译时生成常量,也就是说,没有预先设置Class文件中常量池的内容才能输入该方法。区域运行时常量池,在运行时也可以将新的常量放入池中,此功能是开发人员更常用的String类的intern()方法。
  既然运行时常量池是方法区的一部分,自然会受到方法区内存的限制,当常量池无法再申请到内存时会抛出OutOfMemoryError异常
  相关推荐:【鲁班学院】java高级培训-能懂系列之Map详解
  如果你想了解更多关于java架构师的专业知识,可以加入JAVA架构师交流群:1037935907,里面都是同行,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值