类(型)的生命周期--装载、连接、初始化、卸载 2009-02-14 13:04:54| 分类: Java |字号 订阅 Java 虚拟机通过装载、连接和初始化一个 Java 类型,使该类型可以被正在运行的Java 程序所使用
装载 装载阶段包括三个基本动作: a) 通过该类型的完全限定名,产生一个代表该类型的二进制数据流
b) 解析这个二进制数据流为方法区的内部数据结构(方法区) c) 创建一个表示该类型的java
Class 类的实例(堆上) 二进制数据的产生的可能是很多的,比如:从本地系统装载一个class 文件、网络下载一个class 文件等等,有了这些二进制数据之后,java 虚拟机就会对这些数据进行足够的处理,然后它才能创建java
Class 的实例对象
装载步骤的最终产品就是这个Class 类的实例对象,它成为Java 程序与内部数据结构之间的接口
要访问关于该类型的信息,程序就要调用该类型对应的Class对应的方法
这样一个过程就是把一个二进制数据解析为方法区中的内部数据结构、并在堆上建立一个Class 对象的过程,称为“创建”类型
连接 在类型被装载以后,就准备连接了
连接过程的第一步就是:验证 2
1 验证 在装载过程中,虚拟机必须解析代表类型的二进制数据流,并且构造内部数据结构,这时候就必须做一些特定的检查,以保证解析二进制数据的初始工作不会导致虚拟机崩溃
比如确保每一个部分在正确的位置,拥有正确的长度,验证文件不是太长或者太短,等等,虽然这些检查在装载期间完成,是在正式连接验证之前完成,但是它们在逻辑上仍然属于验证阶段
在正式的验证阶段可能需要完成一下检查: 检查 fin al 的类不能拥有子类 检查 fin al 的方法不能被覆盖 确保在类型和超类型之间没有不兼容的方法声明 检查所