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文件结构之属性表
    相关文章
    |
    1月前
    |
    存储 Java
    深入理解Java虚拟机:JVM内存模型
    【4月更文挑战第30天】本文将详细解析Java虚拟机(JVM)的内存模型,包括堆、栈、方法区等部分,并探讨它们在Java程序运行过程中的作用。通过对JVM内存模型的深入理解,可以帮助我们更好地编写高效的Java代码,避免内存溢出等问题。
    |
    5天前
    |
    存储 Java 编译器
    JVM系列7-虚拟机字节码执行引擎
    JVM系列7-虚拟机字节码执行引擎
    11 1
    |
    17天前
    |
    存储 安全 Java
    深入探究Java虚拟机(JVM)的技术细节
    深入探究Java虚拟机(JVM)的技术细节
    |
    19天前
    |
    存储 算法 Java
    深入理解Java虚拟机(JVM)的垃圾回收机制
    【5月更文挑战第30天】 在Java开发领域,垃圾回收(Garbage Collection, GC)是确保应用程序性能和内存效率的关键因素。本文将深入探讨Java虚拟机(JVM)的垃圾回收机制,解析其工作原理、不同算法的特点以及如何通过调优来提高应用性能。我们将透过JVM的内存结构,探索垃圾回收过程中涉及的关键技术点,并讨论现代Java应用中常见的垃圾回收器实现。
    |
    20天前
    |
    存储 SQL 数据挖掘
    服务器数据恢复—误删除VMware虚拟机vmdk文件的数据恢复案例
    服务器数据恢复环境: 某大厂PS4000服务器,服务器上部署VMware ESXi虚拟化平台。 服务器故障: 机房断电,重启后服务器中的某台虚拟机不能正常启动。管理员查看虚拟机配置文件,发现无法启动的虚拟机的配置文件除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还存在。联系VMware原厂工程师进行诊断,VMware原厂工程师尝试新建一个虚拟机,但发现存储空间不足,于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除了。VMware工程师重新建了一个虚拟机,分配了固定大小的虚拟磁盘,为虚拟机安装了Window
    服务器数据恢复—误删除VMware虚拟机vmdk文件的数据恢复案例
    |
    21天前
    |
    存储 Java 开发者
    深入理解Java虚拟机:JVM内存模型解析
    【5月更文挑战第27天】 在Java程序的运行过程中,JVM(Java Virtual Machine)扮演着至关重要的角色。作为Java语言的核心执行环境,JVM不仅负责代码的执行,还管理着程序运行时的内存分配与回收。本文将深入探讨JVM的内存模型,包括其结构、各部分的作用以及它们之间的相互关系。通过对JVM内存模型的剖析,我们能够更好地理解Java程序的性能特征,并针对性地进行调优,从而提升应用的执行效率和稳定性。
    |
    22天前
    |
    Oracle Cloud Native Java
    【JVM】初步认识Java虚拟机
    【JVM】初步认识Java虚拟机
    26 6
    |
    24天前
    |
    存储 算法 Java
    深入解析Java虚拟机(JVM):技术原理与性能优化
    深入解析Java虚拟机(JVM):技术原理与性能优化
    32 1
    |
    1月前
    |
    存储 缓存 安全
    深入浅出JVM(三)之HotSpot虚拟机类加载机制
    深入浅出JVM(三)之HotSpot虚拟机类加载机制
    |
    1月前
    |
    存储 缓存 算法
    深入浅出JVM(一)之Hotspot虚拟机中的对象
    深入浅出JVM(一)之Hotspot虚拟机中的对象