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文件结构之属性表
    相关文章
    |
    6月前
    |
    Arthas 存储 算法
    深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
    JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
    659 55
    |
    4月前
    |
    存储 Java 编译器
    深入理解Java虚拟机--类文件结构
    本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
    137 0
    |
    7月前
    |
    Arthas 监控 Java
    Arthas redefine(加载外部的.class文件,redefine到JVM里 )
    Arthas redefine(加载外部的.class文件,redefine到JVM里 )
    316 15
    |
    6月前
    |
    Arthas 存储 Java
    JVM深入原理(三+四):JVM组成和JVM字节码文件
    目录3. JVM组成3.1. 组成-运行时数据区3.2. 组成-类加载器3.3. 组成-执行引擎3.4. 组成-本地接口4. JVM字节码文件4.1. 字节码文件-组成4.1.1. 组成-基础信息4.1.1.1. 基础信息-魔数4.1.1.2. 基础信息-主副版本号4.1.2. 组成-常量池4.1.3. 组成-方法4.1.3.1. 方法-工作流程4.1.4. 组成-字段4.1.5. 组成-属性4.2. 字节码文件-查看工具4.2.1. javap4.2.2. jclasslib4.2.3. 阿里Arthas
    125 0
    |
    6月前
    |
    存储 安全 Java
    JVM深入原理(五):JVM组成和JVM字节码文件
    类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析。
    104 0
    |
    9月前
    |
    存储 数据挖掘 虚拟化
    vsan数据恢复—vsan缓存盘故障导致虚拟机磁盘文件丢失的数据恢复案例
    VMware vsan架构采用2+1模式。每台设备只有一个磁盘组(7+1),缓存盘的大小为240GB,容量盘的大小为1.2TB。 由于其中一台主机(0号组设备)的缓存盘出现故障,导致VMware虚拟化环境中搭建的2台虚拟机的磁盘文件(vmdk)丢失。
    |
    2月前
    |
    Oracle 关系型数据库 虚拟化
    在VMware的Win10虚拟机中安装使用ENSP
    本文介绍了在Windows 10虚拟机上安装ENSP及相关软件的全过程,包括VirtualBox、WinPcap、Wireshark、VLC和ENSP的安装步骤,并提供图文演示,帮助用户顺利完成配置与测试。
    862 134
    |
    1月前
    |
    Linux 虚拟化 iOS开发
    VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
    VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
    384 0
    VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
    |
    1月前
    |
    Linux 虚拟化 iOS开发
    VMware Fusion 25H2 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
    VMware Fusion 25H2 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
    404 0
    VMware Fusion 25H2 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
    |
    1月前
    |
    存储 Linux 文件存储
    VMware vSphere Replication 9.0.4 - 虚拟机复制和数据保护
    VMware vSphere Replication 9.0.4 - 虚拟机复制和数据保护
    149 2