classloader加载原理

  • 格式:doc
  • 大小:13.05 KB
  • 文档页数:3

- 1 - classloader加载原理

classloader是java中一个比较重要的类加载器,每一个程序和类都会存在一个classloader,classloader有三种主要的工作:加载类的二进制字节流、连接、初始化。

一、Classloader加载机制

1、首先classloader会按照特定的方式去搜索类文件,当它找到了相应的类文件之后,它会将这个类文件转换成为二进制字节流,这里涉及到编译程序,classloader会使用编译程序将源程序编译成可执行文件。

2、接下来classloader会将这些二进制字节流存储在内存中,然后classloader会连接这些字节流,这一步是它将这些字节流组装成一个完整的类文件,这里涉及到类的加载,这些加载的类可以被访问,但是它们的代码还未被执行。

3、最后classloader会初始化这些加载的类,这一步就是它将这些类的代码执行,这里classloader会执行所有类变量的初始化,同时也会执行所有静态代码块的内容,最后我们就可以得到一个完整的类文件。

二、Classloader的三种类型

1、Bootstrap Classloader:

它是用来加载JRE的核心类的,它的实现是C++语言,它的加载范围是从lib下面开始,这个类加载器不需要程序员编写任何外部类。 - 2 - 2、Extension Classloader:

它是用来加载扩展类的,从libext开始加载,它继承自Bootstrap Classloader,这种类加载器也不需要程序员手动编写任何外部类。

3、Application Classloader:

它是用来加载程序类的,它继承自Extension Classloader,它从ClassPath(来自系统变量或者命令行参数)所指定的路径中加载类,但是它不会加载扩展类。

三、Classloader安全机制

1、安全性验证:

Classloader在加载类的时候会先验证这个类文件,检查它是否符合class文件格式,其次classloader会过滤掉由它本身加载的不安全的类,这涉及到安全管理器的配置,例如:可以设置它只能加载特定的域名下的类文件。

2、类的隔离:

Classloader会将加载的类隔离开,从而使一个类的实例不能访问另外一个类的实例,它可以在一个安全的运行环境中去运行一些不安全的类,这样就可以有效的保护系统不受到恶意代码攻击。

总结

以上就是classloader加载原理的相关内容,classloader是java中一个重要的类加载器,它负责将类文件从源程序编译为可执行文件,并将其存储在内存中,它有三种主要的工作:加载二进制字 - 3 - 节流,连接类文件,初始化类文件,Classloader也可以实现安全性验证和类的隔离,从而保护系统。