JVM虚拟机-Class文件之属性表集合

简介: JVM虚拟机-Class文件之属性表集合

 一、概述

在class文件中,属性表集合包括Java虚拟机预先规范定义的属性以及用户自定义的属性,对于用户自定义的属性,虚拟机加载的时候会自动忽略掉。class文件、字段表、方法表都可以携带自己的属性表集合,便于描述某些场景专有的信息。

二、组成

image.gif编辑

虚拟机中预定义的属性有:

属性名称 使用位置 含义
Code 方法表 Java代码编译成的字节码指令
ConstantValue 字段表 final关键字定义的常量池
Deprecated 类,方法,字段表 被声明为deprecated的方法和字段
 Exceptions 方法表  方法抛出的异常 
 EnclosingMethod 类文件  仅当一个类为局部类或者匿名类是才能拥有这个属性,这个属性用于标识这个类所在的外围方法 
 InnerClass 类文件  内部类列表 
 LineNumberTable Code属性  Java源码的行号与字节码指令的对应关系 
 LocalVariableTable Code属性  方法的局部便狼描述 
 StackMapTable Code属性  JDK1.6中新增的属性,供新的类型检查检验器检查和处理目标方法的局部变量和操作数有所需要的类是否匹配 
 Signature 类,方法表,字段表   用于支持泛型情况下的方法签名
 SourceFile 类文件  记录源文件名称 
 SourceDebugExtension 类文件  用于存储额外的调试信息 
 Synthetic 类,方法表,字段表  标志方法或字段为编译器自动生成的 
 LocalVariableTypeTable 类  使用特征签名代替描述符,是为了引入泛型语法之后能描述泛型参数化类型而添加 
 RuntimeVisibleAnnotations 类,方法表,字段表  为动态注解提供支持 
 RuntimeInvisibleAnnotations 表,方法表,字段表  用于指明哪些注解是运行时不可见的 
 RuntimeVisibleParameterAnnotation 方法表  作用与RuntimeVisibleAnnotations属性类似,只不过作用对象为方法
 RuntimeInvisibleParameterAnnotation   方法表  作用与RuntimeInvisibleAnnotations属性类似,作用对象哪个为方法参数
 AnnotationDefault  方法表 用于记录注解类元素的默认值 
 BootstrapMethods 类文件  用于保存invokeddynamic指令引用的引导方式限定符  

属性表的结构attribute_info

attribute_info{
    attribute_name_index//属性的名称索引(指向常量池)2个字节
    attribute_length//属性长度 4个字节
    info//有attribute_length个字节属性值
}

image.gif

三、常见属性介绍

Code属性

Exceptions属性

LineNumberTable属性

LocalVariableTable属性

SourceFile属性

ConstantValue属性

InnerClass属性

属性表这部分内容比较多,也比较复杂,暂时先记录到这里。

参考资料:

    1. JVM-class文件完全解析-属性表集合 - 小凉 - 博客园
    2. class类文件结构——属性表集合_Joy CR的博客-CSDN博客
    3. Class文件结构介绍[属性表集合]_波波烤鸭的博客-CSDN博客_class文件结构之属性表
    相关文章
    |
    2月前
    |
    安全 Java
    对 JVM 的类加载机制以及寻找字节码文件的“双亲委派模型”的理解
    对 JVM 的类加载机制以及寻找字节码文件的“双亲委派模型”的理解
    21 0
    |
    2月前
    |
    存储 SQL 数据挖掘
    服务器数据恢复—误删除VMware虚拟机vmdk文件的数据恢复案例
    服务器数据恢复环境: 某大厂PS4000服务器,服务器上部署VMware ESXi虚拟化平台。 服务器故障: 机房断电,重启后服务器中的某台虚拟机不能正常启动。管理员查看虚拟机配置文件,发现无法启动的虚拟机的配置文件除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还存在。联系VMware原厂工程师进行诊断,VMware原厂工程师尝试新建一个虚拟机,但发现存储空间不足,于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除了。VMware工程师重新建了一个虚拟机,分配了固定大小的虚拟磁盘,为虚拟机安装了Window
    服务器数据恢复—误删除VMware虚拟机vmdk文件的数据恢复案例
    |
    25天前
    |
    存储 Java 编译器
    【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识
    【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识
    |
    2月前
    |
    Java 索引
    【JVM】字节码文件的组成部分
    【JVM】字节码文件的组成部分
    31 1
    |
    1月前
    |
    存储 XML 安全
    JVM系列5-类文件结构
    JVM系列5-类文件结构
    11 0
    |
    2月前
    |
    存储 前端开发 Java
    深入浅出JVM(四)之类文件结构
    深入浅出JVM(四)之类文件结构
    深入浅出JVM(四)之类文件结构
    |
    2月前
    |
    Windows
    虚拟机内存越用越少,即使文件都永久删除了!!!
    虚拟机内存越用越少,即使文件都永久删除了!!!
    |
    17天前
    |
    Unix Linux 虚拟化
    虚拟机VMware知识积累
    虚拟机VMware知识积累
    |
    5天前
    |
    运维 安全 虚拟化
    |
    26天前
    |
    存储 IDE 开发工具
    【读书笔记】 玩转虚拟机基于Vmware+Windows 虚拟化技术
    【读书笔记】 玩转虚拟机基于Vmware+Windows 虚拟化技术