jvm虚拟机 class文件常量池与运行时常量池
发布日期:2021-06-20 05:37:00 浏览次数:6 分类:技术文章

本文共 755 字,大约阅读时间需要 2 分钟。

jvm虚拟机 class文件常量池与运行时常量池

class文件常量池

java文件编译后生成class文件,里面存有两部分内容:

  1. 类的版本、字段、方法、接口等描述信息。(字段是指我们平时在接口或类里声明的各种变量 int a 等)
  2. 常量池:存放编译期生成的字面量和符号引用。

class文件常量池就是指上面描述的class文件的常量池,其中字面量包括 文本字符串如“hello”、声明为final的常量值等。 符号引用属于编译原理方面的东西包括下面三类常量:

  • 类和接口的全限定名
  • 字段的名称和描述符
  • 方法的名称和描述符

运行时常量池

Java代码在进行Javac编译的时候,并不像C和C++那样有“连接”这一-步骤,而是在;虚拟机加载Class文件的时候进行动态连接。也就是说,在Class文件中不会保存各个方法、字段的最终内存布局信息,因此这些字段、方法的符号引用不经过运行期转换的话无法得到真正的内存人口地址,也就无法直接被虚拟机使用。当虚拟机运行时,需要从常量池获得对应的符号引用,再在类创建时或运行时解析、翻译到具体的内存地址之中。class文件常量池将在类加载后进入方法区的运行时常量池。运行时常量池内容包括:

  1. class文件常量池
  2. class文件常量池里面的符号引用翻译出的直接引用

区别:

java虚拟机对class文件的每一部分(包括class常量池)都有严格规定,每个字节用于存储哪种数据等。但是对于运行时常量池java虚拟机规范没有做任何细节的要求,不过一般来说除了保存class文件常量池的符号引用,还会存储翻译出的直接引用。
运行时常量池相对class文件常量池具备动态性,也就是并非只有class文件的常量池的内容才能进入方法区的运行时常量池,运行期间也可以将新的常量放入池中,比如

转载地址:https://blog.csdn.net/h2453532874/article/details/84893805 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java“Volatile”关键字浅析
下一篇:java常量,变量,静态变量的理解

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月28日 13时43分10秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

web开发 mysql安装_mysqlinstallerwebcommunity5.7.21.0.msi安装图文教程 2019-04-21
mysql concat 整数型_MySQL 数字类型转换函数(concat/cast) 2019-04-21
mysql单元格函数是_MySQL常用内置函数 2019-04-21
mysql 怎么字段分裂_你可以分裂/爆炸MySQL查询中的字段吗? 2019-04-21
mysql server卸载出错_Mysql卸载问题Start Server卡住报错解决方法 2019-04-21
全国省市区 mysql_2017全国省市区数据库【含三款数据库】 2019-04-21
druid加载MySQL驱动原理_你好,想知道mybatis+druid+jdbc 原理介绍? 2019-04-21
mysql 怎样链接jdbc_jdbc怎么链接mysql数据库 2019-04-21
mysql学生课程表试题_Mysql练习之 学生表、课程表 、教师表、成绩表 50道练习题... 2019-04-21
java exec封装_Java 执行系统命令工具类(commons-exec) 2019-04-21
php sha512解密,PHP加密函数 sha256 sha512 sha256_file() sha512_file() 2019-04-21
php将文件夹打包zip文件,PHP把文件夹打包成ZIP文件 2019-04-21
mysql in 逗号分隔,使用MySQL IN()从逗号分隔的值中获取记录? 2019-04-21
php静态页面示例,php生成静态页面的简单示例_php实例 2019-04-21
迭代函数系统matlab实现,线性随机IFS迭代Matlab示例程序.doc 2019-04-21
w3wp ash oracle,[20200409]使用ash_wait_chains注意的一个细节.txt 2019-04-21
c语言程序设计教程谭浩强张基温,C语言程序设计教程(第2版) 2019-04-21
idea xml文件引入类提示_IDEA中导入多module的Maven项目后子项目不正常的情况 2019-04-21
太赫兹芯片是什么原理_什么是太赫兹技术?艾舒朗太赫兹理疗鞋——脑梗后遗症+便秘+久站腿疼腿肿案例... 2019-04-21
exfat默认配置大小_mac开发配置技巧 2019-04-21