专辑里的
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。