android复习路之类的加载篇

来源:互联网 发布:vnr更新网络 编辑:程序博客网 时间:2024/06/09 17:26

类加载的全部过程分为5个阶段:加载,验证,准备,解析,初始化。

1.加载 

(1)加载二进制文件

根据包名+类名获得二进制文件流,虚拟机没有规定文件从哪里来只要符合规范就行。由类的加载器来决定字节流的来源。

(2)生成方法区的数据结构

根据前一步读取的字节留,在方法区创建运行时的数据结构

(3)创建class的实例

在java堆中创建java.lang.class 的实例作文代码方位类型数据的外部接口。

2.验证

(1)文件格式验证

验证字节流是否符合class文件的规范。

(2)元数据验证

验证class文件的描述是否符合java的语言规范。

(3)字节码验证

对类方法进行验证确保方法运行是不会做出危害虚拟的行为。

(4)引用符验证

在解析阶段直接引用常量的时候先要验证符号引用

3.准备

(1)在方法区内为static field分配内存并设置初始值

static 变量 在此处设置的初始值是java虚拟机设定的值。

static final 变量 在此设定的就是你定义的值。

4.解析

(1)解析类或接口

(2)解析字段

(3)类方法解析

(4)接口方法解析

5.初始化

执行<clint>(),<clint>中包含了对类中所有的变量赋值动作和和静态代码块里面的语句。

0 0
原创粉丝点击