classloader

classloder的作用

.class文件-->类装载器-->执行引擎-->本地方法-->操作系统

class文件可以来自网络服务器等途径,来源比较有可定制性。比如zip文件,网络,甚至运行时动态生成的class

java类装载的委托模型

  • 自定义装载器-->应用类装载器(用户程序的classpath)-->扩展类装载器-->启动类装载器

  • 总是把类装载请求发给上一层,如果上层没有,再看自己有没有。

  • 类文件和类装载器唯一确定一个类(即类装载器运行时的命名空间)

defineClass方法

  • 传递给这个方法一个合法的字节数组,就可以转化成class对象

类加载

加载-->连接-->初始化

  • 加载:通过类的全限定名找到类的二进制流。方法区生成该类代表的数据结构。内存生成该类的对象,作为方法区各种数据结构的外部接口

  • 连接

  1. 验证 对格式,元数据,字节码,符号引用进行验证

  2. 准备 将类的静态变量进行内存分配和赋初值

  3. 解析 将类中的符号引用转化为直接引用

  • 初始化:调用类的clinit构造器方法

你可能感兴趣的:(classloader)