001-Java基础-类加载过程

Java类加载过程

主要分为加载、链接、初始化三个步骤,如下图所示:

  • 加载,从不同来源的数据源读取字节码数据到JVM中,并映射为JVM认可的数据结构(Class对象)。
  • 验证。链接的第一个阶段。验证字节码数据是否符合Java虚拟机规范,是虚拟机安全的重要保障。
  • 准备。创建类以及静态变量。
  • 解析。将常量池中的符号引用替换为直接引用。
  • 初始化。静态变量复制,并且执行类中静态代码块中的逻辑。

双亲委派模型

要理解双亲委派模型,需要先理解Java类加载器的结构。

Java在加载阶段,通过类加载器执行加载逻辑。类加载器分为以下四种。

  • 启动类加载器(Bootstrap Class-Loader),加载jre/lib目录下的jar文件。
  • 扩展类加载器(Extemsion Class-Loader),加载jre/lib/ext目录下的jar文件。
  • 应用类加载器(Application Class-Loader),加载应用classpath中的内容。
  • 自定义加载器,用户自定义逻辑的加载器,可以加载任何位置的文件。

双亲委派模型是指,当前类加载器在加载类时,除非其父类加载器加载不到执行的类,否则这个加载动作应该由父类加载器完成。

使用双亲委派模型的目的是避免在类加载过程中重复加载Java类型。

上篇001-Java基础-IO
下篇001-Java基础-volatile关键字