Java 虚拟机类装载:原理、实现与应用
一、引言
虚拟机的类装载就是指将包含在类文件中的字节码装载到 中并使其
成为 一部分的过程。 的类动态装载技术能够在运行时刻动态地加载或者替换系统
的某些功能模块而不影响系统其他功能模块的正常运行。本文将分析 中的类装载系
统,探讨 中类装载的原理、实现以及应用。
二、 虚拟机的类装载实现与应用
装载过程简介
所谓装载就是寻找一个类或是一个接口的二进制形式并用该二进制形式来构造代表这
个类或是这个接口的 对象的过程,其中类或接口的名称是给定了的。当然名称也可
以通过计算得到,但是更常见的是通过搜索源代码经过编译器编译后所得到的二进制形式
来构造。
在 中,类装载器把一个类装入 虚拟机中,要经过三个步骤来完成:装载、
链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严
格按照顺序完成的,各个步骤的主要工作如下:
装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量的初始化 代码和静态 代码块。
至于在类装载和虚拟机启动的过程中的具体细节和可能会抛出的错误,请参看《
虚拟机规范》以及《深入 虚拟机》,它们在网络上面的资源地址是:
!"和
###!$。 由于本文的讨论重点不在此就
不再多叙述。
装载的实现
中类的装载是由 %&! 和它的子类来实现的%&!是一个
重要的 运行时系统组件。它负责在运行时查找和装入类文件的类。