classloder的作用
.class文件-->类装载器-->执行引擎-->本地方法-->操作系统
class文件可以来自网络服务器等途径,来源比较有可定制性。比如zip文件,网络,甚至运行时动态生成的class
java类装载的委托模型
自定义装载器-->应用类装载器(用户程序的classpath)-->扩展类装载器-->启动类装载器
总是把类装载请求发给上一层,如果上层没有,再看自己有没有。
类文件和类装载器唯一确定一个类(即类装载器运行时的命名空间)
defineClass方法
- 传递给这个方法一个合法的字节数组,就可以转化成class对象
类加载
加载-->连接-->初始化
加载:通过类的全限定名找到类的二进制流。方法区生成该类代表的数据结构。内存生成该类的对象,作为方法区各种数据结构的外部接口
连接
验证 对格式,元数据,字节码,符号引用进行验证
准备 将类的静态变量进行内存分配和赋初值
解析 将类中的符号引用转化为直接引用
- 初始化:调用类的clinit构造器方法