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++语言,它的加载范围是从
它是用来加载扩展类的,从
3、Application Classloader:
它是用来加载程序类的,它继承自Extension Classloader,它从ClassPath(来自系统变量或者命令行参数)所指定的路径中加载类,但是它不会加载扩展类。
三、Classloader安全机制
1、安全性验证:
Classloader在加载类的时候会先验证这个类文件,检查它是否符合class文件格式,其次classloader会过滤掉由它本身加载的不安全的类,这涉及到安全管理器的配置,例如:可以设置它只能加载特定的域名下的类文件。
2、类的隔离:
Classloader会将加载的类隔离开,从而使一个类的实例不能访问另外一个类的实例,它可以在一个安全的运行环境中去运行一些不安全的类,这样就可以有效的保护系统不受到恶意代码攻击。
总结
以上就是classloader加载原理的相关内容,classloader是java中一个重要的类加载器,它负责将类文件从源程序编译为可执行文件,并将其存储在内存中,它有三种主要的工作:加载二进制字 - 3 - 节流,连接类文件,初始化类文件,Classloader也可以实现安全性验证和类的隔离,从而保护系统。