JVM运行时常量池跟静态常量池区别

    最近学习了JVM原理,遇到了运行时常量池的区域定义,他是属于JVM运行时内存模型方法区中的一部分,总体分布如下图:

 

如下图:整体分布如下

而运行、静态常量池是属于方法区的一部分,一般我通常说的是运行时的常量区,他跟静态常量区区别是什么?

 

 

 

个人认为,静态常量池是针对每个被加载进入内存的class文件解析后,存放各个字面量值,符号引用的数据,而运行时常量区就是把所有的静态常量的数据汇总到一起(模糊来说)。

更底层到汇编层面来说,内存中的各个数据没有类这个概念,每次都是一个类一个方法的调用,就是相当于寄存器的相对变址寻址过程,

105449_xgG1_867830.png

(上图中#1 #2等是否就是计算实际地址的符号哪?)

运行时方法区就是把每个类的唯一标识作为他的段地址(DS),而内部的各个变量字段方法等都是偏移地址(BX),等到真正入栈执行时候这些字段方法的相对定位符等被解析成为真正的地址,从而进入CS IP被识别执行;那么进一步猜想java的权限包的概念是否也可以由此得到全部的类信息汇总后进行进一步控哪

 

 

 

 

转载于:https://my.oschina.net/u/867830/blog/1609952

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值