目录
  1. 1. 常量池
    1. 1.1. CONSTANT_Class_info结构体
    2. 1.2. CONSTANT_Fieldref_info, CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info结构体
    3. 1.3. CONSTANT_String_info 结构体
    4. 1.4. CONSTANT_Integer_info和CONSTANT_Float_info结构体
    5. 1.5. CONSTANT_Long_info和CONSTANT_Double_info结构体
    6. 1.6. CONSTANT_NameAndType_info结构体
    7. 1.7. CONSTANT_Utf8_info结构体
    8. 1.8. CONSTANT_MethodHandle_info结构体
    9. 1.9. CONSTANT_MethodType_info结构体
    10. 1.10. CONSTANT_InvokeDynamic_info结构体
常量池

常量池

java虚拟机指令依赖在常量池表中的符号信息,而不是类,接口,类实例或者数组的运行时布局。

所有的常量池项都遵循以下格式:

1
2
3
4
cp_info {
u1 tag;
u1 info[];
}
  1. 在常量池表中的每个元素都有这个cp_info形式的结构,tag是一个元素的开始字段,占1位,用来表示cp_info这个结构是哪种结构(CONTSANT_Class_info等结构)。
  2. info数组是tag表示的结构组成的数组。
    以下就是tag与cp_info结构对应关系。value项就是常量类型在tag中的标志。当tag=7时,info里面就存储一个CONTSANT_Class类型的数组。
    contant_pool_tag

CONSTANT_Class_info结构体

CONSTANT_Fieldref_info, CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info结构体

CONSTANT_String_info 结构体

CONSTANT_Integer_info和CONSTANT_Float_info结构体

CONSTANT_Long_info和CONSTANT_Double_info结构体

CONSTANT_NameAndType_info结构体

CONSTANT_Utf8_info结构体

CONSTANT_MethodHandle_info结构体

CONSTANT_MethodType_info结构体

CONSTANT_InvokeDynamic_info结构体

文章作者: rack-leen
文章链接: http://yoursite.com/2020/01/18/Java/jvm/class%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F/%E5%B8%B8%E9%87%8F%E6%B1%A0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 rack-leen's blog
打赏
  • 微信
  • 支付宝

评论