Java ClassLoader 分析

来源:互联网 发布:图片文字修改软件 编辑:程序博客网 时间:2024/05/22 07:45

先贴一段

 

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文件发现文件格式错误或者不能被解析时抛出此错误

原创粉丝点击