JVM类加载机制

上级委托加载机制

1.整个JVM平台提供三层ClassLoader

  • Bootstrap ClassLoader

    主要加载JVM自身工作需要的类 ,完全由JVM控制,一个类加载工具,没有高一级的父类加载器,也没用子加载器 没有遵守ClassLoader加载规则

  • ExtClassLoader

    标准扩展类加载器 没父

  • AppClassLoader

    父类是ExtClassLoader classpath目录下的类都可以被这个加载器加载

注意:

​ 1.如果要实现自己的类加载器,不管你是直接实现抽象类ClassLoader,还是继承URLClassLoader类,或者其他子类,它的父加载器都是AppClassLoader.

​ 2.在应用中能提取到的顶层父类是ExtClassLoader

2.JVM加载.class文件的过程

  • 找到 .class文件,并把该文件包含的字节码加载到内存中.
  • 字节码验证,Class类数据结构分析及相应的内存分配和最后的符号表的链接
  • 类中静态属性和初始化赋值,以及静态块的执行