五 5.4 --- 方法区运行时常量池的理解

五 5.4 — 方法区运行时常量池的理解

学习渠道:尚硅谷

A.JVM运行时内存结构

在这里插入图片描述

B.常量池与运行时常量池的理解

在这里插入图片描述

要了解运行时常量池,首先我们要了解的是常量池,,因为常量池在类加载的时候加载到方法区中就变成了运行时常量池

C.为什么需要常量池这种数据结构

在这里插入图片描述

  • 可让代码"减负"
  • 常量池中使用到的都是符号引用
  • 真正要去运行的话,就要真正去找那些真正的类了(找到了还要记录那些地址,方便下次找),,比如String System Object 。。。

D. 使用jclasslib演示的任意demo

我们可以发现,其他各种方法的常量池的调用逻辑是十分复杂的(当然,运行时需要将这些符号引用转成直接引用),比如:

  • String Ljava/io/PrintStream 里面的L是指引用类型
  • System,out.print(“a”+“b”) 此处print()方法会先构造一个StringBuilder的对象,拼接之后在返回
  • 做一个比喻:常量池比喻成原材料场地,然后我们的程序就是从其中挑选出内容来合成“产品”

F.常量池中的内容

在这里插入图片描述

G.常量池小结

常量池我们可以看做是一张表,虚拟机指令根据这张常量表找到要执行的类名、方法名、参数类型,字面量等类型。

H.接下来介绍运行时常量池

在这里插入图片描述
运行时常量池,相对于Class文件常量池的另一重要特征:具备动态性
String.Intern() 比如这个方法就放到了运行时常量池中

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值