解析Java Class Loader 类加载过程

Java基本结构

Java结构包括四个不同而又相关的部分:

Java语言、class文件格式、应用程序接口、虚拟机

其中,虚拟机的主要任务是在程序运行中需要的时候调用class文件并执行其中的字节码。一个Java应用有两种class loaderthe system class loader class loader objectsThe primordial class loader 通常装载本地磁盘上包括Java API在内的信任类,它是虚拟机的一部分。在运行时,还可以定制class loader objects来加载其他,不是虚拟机的一部分,而是程序运行的一部分。

 

Class文件结构

Java class 文件的标志:开头四个字节为0xCAFEBABE

 

ClassLoader

ClassLoader 负责定位并导入class的二进制数据,并验证其正确性,分配初始化类成员变量的存储空间并初始化等等。所有的class loader都必须通过以下三个方法来完成以上任务。

protected final Class defineClass(String name,byte[] b, int off, int len,

                                  ProtectionDomain protectionDomain)

                           throws ClassFormatError

将字节码转变为Class实例,这个实例必须经过解析才能够使用。

 

protected final Class findSystemClass(String name)

                               throws ClassNotFoundException

如果the primordial class loader已经加载成功此类,则返回其索引,否则抛出ClassNotFoundException

protected final void resolveClass(Class c)

将类实例初始化

 

ClassFormatError

当虚拟机试图读取一个class文件发现文件格式错误或者不能被解析时抛出此错误

 

[参考资料]

1Sun j2sdk 1.4.2 _08 api

2Bill Venners - Inside the Java Virtual Machine

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值