当前位置: 首页 > wzjs >正文

网站负责人姓名贵阳seo网站推广

网站负责人姓名,贵阳seo网站推广,百度商桥网站代码去哪里添加,wordpress 目录遍历JDK8以后,运行时常量池逻辑上属于方法区;但: 其中的字符串常量池实际位置移至到了java堆;其中一些符号引用也存储到了元空间;字符串常量池,元空间,运行时常量区的具体关系请看这篇博客&#xf…

 JDK8以后,运行时常量池逻辑上属于方法区;但:

  • 其中的字符串常量池实际位置移至到了java堆;
  • 其中一些符号引用也存储到了元空间;
  • 字符串常量池,元空间,运行时常量区的具体关系请看这篇博客:
    JDK8+后,运行时常量池、字符串常量池和元空间的关-CSDN博客

        JVM 方法区(Method Area) 中的 运行时常量池(Runtime Constant Pool) 存储的数据来源于 类文件常量池(Class File Constant Pool),并在运行时进行动态解析和扩展。具体存储的内容可以分为以下几类:


1. 类文件常量池的原始数据(编译期生成)

.class 文件中,常量池(Constant Pool)存储了各种符号信息,JVM 在加载类时会将其解析到运行时常量池。主要包括:

(1) 字面量(Literals)

  • 字符串常量String):如 "Hello"(最终可能被放入字符串池 String Table)。

  • 数值常量

    • 整型(int, long, short, byte, char):如 123, 0x1F

    • 浮点型(float, double):如 3.14, 2.71828

  • final 常量(无论是否 static):

    • static final int MAX = 100;(静态常量)

    • final String NAME = "Java";(实例常量)

(2) 符号引用(Symbolic References)

  • 类和接口的全限定名(Fully Qualified Name):如 java/lang/String

  • 字段的名称和描述符(Field Name & Descriptor):

    • Ljava/lang/String;(字段类型描述符)。

  • 方法的名称和描述符(Method Name & Descriptor):

    • main([Ljava/lang/String;)Vmain 方法的描述符)。

  • 方法句柄(MethodHandle)和动态调用点(InvokeDynamic)信息(Java 7+)。


2. 运行时动态解析的数据

在类加载、链接(验证、准备、解析)阶段,JVM 会将符号引用转换为直接引用:

  • 类/接口的解析:将 java/lang/Object 转换为实际类对象的引用。

  • 字段解析:将字段符号引用转换为内存偏移量或 Field 对象。

  • 方法解析:将方法符号引用转换为方法入口地址(Method 对象或 JNI 指针)。

  • 动态计算的常量(Java 8+):

    • CONSTANT_Dynamicinvokedynamic 指令使用的动态常量)。


3. 动态生成的常量

  • String.intern() 的字符串

    • 调用 "abc".intern() 后,字符串会被放入字符串池(String Table),逻辑上属于运行时常量池的一部分(但 HotSpot 的字符串池在堆中)。

  • 动态代理类、Lambda 表达式生成的类信息(可能涉及新的常量池条目)。

  • Class 对象引用:如 String.class 的运行时表示。


4. 其他 JVM 内部使用的数据

  • 基本类型的包装类缓存

    Integer.valueOf(1) 会缓存 -128~127,这些值可能被复用。
  • 特殊常量

    null 的表示,以及某些 JVM 内部使用的标记常量(如异常类名)。

总结:运行时常量池存储哪些数据?

数据类型示例是否动态解析
字符串常量"Hello"可能 intern()
数值常量123, 3.14
final 常量static final int X=1可能内联优化
类和接口全限定名java/lang/String解析为 Class
字段/方法符号引用Ljava/lang/String;解析为直接引用
动态计算的常量CONSTANT_Dynamic(Java 8+)运行时计算
String.intern()"abc".intern()动态添加

关键点

  1. 运行时常量池不仅存储静态常量,还包括所有类文件的常量池信息 + 运行时解析的数据。

  2. 符号引用会在类加载时解析,变成直接引用(如内存地址、方法指针等)。

  3. 字符串常量可能被 intern() 并放入字符串池(HotSpot 中字符串池在堆,但逻辑属于运行时常量池)。

  4. 动态语言支持(如 invokedynamic 会新增动态计算的常量。

如果你对某部分内容(如字符串池、符号引用解析)想深入了解,可以进一步讨论!


 常见误区澄清

  • 误区:“运行时常量池只存静态常量”。 事实:它存储所有类文件常量池的内容,包括动态解析的引用和字面量。

  • 字符串池的特殊性: 在HotSpot JVM中,字符串池(String Table)实际位于堆内存,而非方法区,但逻辑上属于运行时常量池的一部分。


静态 vs. 非静态常量

  • 静态常量(static final: 例如 public static final int MAX = 100;,这类常量会被存入运行时常量池,但它们的可能进一步被内联到使用它们的代码中(编译期优化)。

  • 非静态常量(实例级final常量): 例如 private final String name = "Hello";,虽然字面量 "Hello" 会存储在运行时常量池中,但该常量值是与对象实例绑定的,需要通过实例访问。

http://www.dtcms.com/wzjs/64489.html

相关文章:

  • swoole怎么做直播网站指数分布
  • 怎么样通过做网站赚钱吗黄冈免费网站推广平台汇总
  • 快站怎么做淘客网站网络营销机构官方网站
  • 求网站建设网站优化工作公司建网站流程
  • 公司网站工商备案怎么做深圳seo优化
  • wordpress修改模板文件六盘水seo
  • 旅游网站建站目的软件开发app制作公司
  • 郑州餐饮网站建设公司排名搜狗链接提交入口
  • 高校精神文明建设网站网站功能优化
  • 官方网站建设属于什么科目长春最专业的seo公司
  • python是做什么的黑龙seo网站优化
  • 用vs2012做网站定制网站开发
  • 网站内页不收录热门推广软件
  • 如何检测网站被搜索引擎惩罚了日本比分算1:1
  • 斗图在线制作生成器长沙网站优化
  • 网站建站对象怎么做好网络销售
  • flash做网站轮播图企业管理培训课程网课免费
  • 网站的连接二维码怎么做广州最新疫情通报
  • 公司做网站那个网站好西安百度推广代运营
  • 建设公司网站价格太原做网站推广的公司
  • 绍兴市建设银行网站荥阳seo
  • 旅游网站模板素材宁波网站推广
  • 微信app下载安装官方版2019seo怎么优化武汉厂商
  • 厦门网站建设公司上海seo推广方法
  • jsp动态网页制作教程seo怎么刷排名
  • 网站建设2000元网站开发详细流程
  • php如何制作网站中小企业网站优化
  • wordpress小草播放器佛山企业用seo策略
  • 绵阳市公司网站建设推广排名seo
  • 做网站需要学编程吗百度如何推广广告