陈奇网络工作室

java虚拟机——类文件结构

专辑里的

Java虚拟机系列文章

解释java虚拟机第四部分

1、解释内容逻辑梳理图:

逻辑图是百度脑图,以下是原图的连接:http://naotu.baidu.com/file/782b9fc9f78e729b19620026e615e5ad?token=94dc2c66cbffbd25

2.内容的详细说明:

2.1.类文件结构包含元素:

2.1.1.Magic:类文件的前4个字节是magic,用来决定类文件是否能被虚拟机接受。

2.1.2.主版本号和次版本号(minor_version,major _ version): 5和6个字节是次版本号,7和8是主版本号):5个数字,jdk从45开始递增版本号。jdk支持向后兼容版本,即jdk1.2可以运行jdk1.1编译的类文件。

2.1.3.主版本号和次版本号后面是常量池(constant_pool_count,constant_pool):常量池主要包括两类常量,文字量和符号引用。字面量:一个文本字符串和一个声明为final的常量值。符号引用:类和接口的完全限定名,字段的名称和描述符,方法的名称和描述符。

2.1.4.access_flags:用户标识类或接口级别信息。Class是类还是接口,是否定义为public,是否定义为abstract,如果是类,是否声明为final。

2.1.5.类索引、父索引和接口索引集(this_class、super_class、interface_count、interfaces):类索引用于确定类的全限定名,父索引用于确定父类的全限定名。除java.lang.Object之外的所有类的父索引都不是0。因为java支持多种实现,所以接口索引是一个集合。

2.1.6.fields表集(fields_count,fields):用于描述接口或类声明的变量,包括类级变量和实例级变量。字段信息包括:字段的作用域(public、private、protecte)、实例变量或类变量(有或没有静态修饰)、可变性(有或没有最终修饰)、并发可见性(有或没有可变修饰)、是否可以序列化(有或没有瞬态修饰)、字段数据类型和字段名。

2.1.7.方法表集合(methods_count,methods):包括访问标志(access_flags)、名称索引(name_index)、描述符索引(descriptor_index)和属性表集合(attributes)。方法中的代码将在编译后存储在属性表集合中名为Code的属性中。

2.1.8.属性表集(attributes_count,attributes):类文件、字段表、方法表都包含属性表集。

A) Code属性:java代码被javac编译后,字节码存在于Code属性中。Code属性中不存在接口和抽象类的方法。

B) Exception属性:描述在throws关键字之后列出的异常。

C) LineNumberTable属性:描述源代码行号和字节码行号的对应关系,在程序抛出异常时使用。可选。

D) LocalVariableTable属性:描述局部变量表中变量与java源代码中变量的关系。可选。

E) SourceFile属性:记录生成类文件的源代码文件的名称。可选。

F) ConstantValue属性:通知虚拟机自动为静态变量赋值。同时使用final和static修饰的基本类型和java.lang.String,编译后会生成并初始化ConstantValue属性,否则会在实例构造函数(clinit)中初始化。

G) InnerClasses属性:记录内部类和宿主类之间的关系。

h),已弃用,合成属性:已弃用。Synthetic是指字段或方法不是由java源代码生成,而是由编译器自己添加的。

I) StackMapTable属性:在虚拟机类加载的字节码验证阶段,新的类型检查验证器使用该属性。一个方法最多有一个Code属性。

j)签名属性:泛型标识,可以出现在类、字段表、方法表的结构中。

K) BootstrapMethods属性:在jdk1.7之后添加,该属性用于保存invokedynamic指令引用的boot方法限定符。

2.2.实现虚拟机有两种方式:

2.2.1.加载执行时将输入的java虚拟机代码翻译成另一个虚拟机的指令集。

2.2.2.加载执行时将输入的java虚拟机代码翻译成主机CPU的本地指令集(即JIT代码生成技术)。

回顾过去:

Java虚拟机——的运行时数据区(运行时数据区的内容用图形解释)

2) java虚拟机——垃圾收集(讲解垃圾算法,垃圾收集器等。以图形方式)

java虚拟机——性能监控常用命令(用图形方式解释性能监控常用命令)

java虚拟机——的类文件结构(用图形方式解释类文件结构的内容)

5)、java虚拟机——类加载机制(用图形方式讲解类加载过程)

6) java虚拟机——虚拟机字节码执行引擎(用图形方式讲解字节码执行过程)

7)、java虚拟机——java文件编译过程(用图形方式讲解java文件编译过程)

8) java虚拟机——实时编译器和解释器(用图形的方式解释实时编译器和解释器的工作内容)

9)、java虚拟机——内存模型和线程(用图形方式解释内存模型和线程内容)

10)、java虚拟机——线程安全和锁优化(用图形方式讲解线程安全和锁优化)

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3