Java中的类加载器的分析与理解!详细解析类的加载过程

2021-06-30  本文已影响0人  攻城狮Chova
0dace68aa6c5401b8298e53878e1b415.jpg

类的加载过程

装载

链接

  • 之所以要有验证的步骤:
    • 首先如果由编译器生成的class文件,必定符合JVM字节码格式
    • 但是,如果使用自定义的class文件,在JVM中加载运行,会导致安全问题
    • 因此需要为class文件添加验证的步骤,如果不符合,就不会继续执行,保证JVM安全

初始化

  • 准备阶段和初始化阶段似乎有矛盾,但其实并不矛盾:
    • 假如类中有这样的语句: private static int a = 10 , 该语句的执行过程如下:
      • 首先字节码文件加载到内存中
      • 进行链接的验证步骤
      • 验证通过后进行准备步骤,给a分配内存
      • 因为变量a是static属性,所以a的值为int类型的默认初始值0,即a = 0
      • 然后进行到解析的步骤
      • 只有到初始化步骤时,才把a的真正的值10赋给a,此时a = 10

类的初始化

类进行初始化的场景

类的初始化步骤

类的加载

类的加载过程

类的加载方式

类加载器

Bootstrap ClassLoader

Extension ClassLoader

App ClassLoader

Custom ClassLoader

加载过程

上一篇下一篇

猜你喜欢

热点阅读