jvm类的加载过程

    xiaoxiao2025-01-21  16

    1.类的加载过程  

    JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:

    1) 装载:查找并加载类的二进制数据;

    2)链接:

    验证:确保被加载类的正确性;

    准备:为类的静态变量分配内存,并将其初始化为默认值;

    解析:把类中的符号引用转换为直接引用;

    3)初始化:为类的静态变量赋予正确的初始值;

              那为什么我要有验证这一步骤呢?首先如果由编译器生成的class文件,它肯定是符合JVM字节码格式的,但是万一有高手自己写一个class文件,让JVM加载并运行,用于恶意用途,就不妙了,因此这个class文件要先过验证这一关,不符合的话不会让它继续执行的,也是为了安全考虑吧。

            准备阶段和初始化阶段看似有点牟盾,其实是不牟盾的,如果类中有语句:private static int a = 10,它的执行过程是这样的,首先字节码文件被加载到内存后,先进行链接的验证这一步骤,验证通过后准备阶段,给a分配内存,因为变量a是static的,所以此时a等于int类型的默认初始值0,即a=0,然后到解析(后面在说),到初始化这一步骤时,才把a的真正的值10赋给a,此时a=10。

    转载请注明原文地址: https://ju.6miu.com/read-1295706.html
    最新回复(0)