Java ClassLoader 分析

Java ClassLoader详解
本文深入探讨Java ClassLoader的工作原理,包括其如何定位、导入类的二进制数据及验证过程等关键步骤。此外还介绍了Java类文件的基本结构及Class文件的标识。

先贴一段

 

Java 基本结构

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

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

其中,虚拟机的主要任务是在程序运行中需要的时候调用 class 文件并执行其中的字节码。一个 Java 应 用有两种 class loader the system class loader class loader objects The 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 文 件发现文件格式错误或者不能被解析时抛出此错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值